Spring Data JPAとSpring Data JDBCの共存

現在、Spring Data JPAを利用してて、JPAからの脱却をするとなると現実的な移行方法を考えたときに、Spring Data JDBCが移行先かなと思い検証を実施しました。 レポジトリは、spring-data-jpa-and-jdbcです。 今回の環境 - Java 21 - Spring Boot 3.4.0 検証…

「キャッシュレス・ロードマップ 2023」を読んで

一般社団法人キャッシュレス推進協議会が毎年発表している、キャッシュレス・ロードマップの2023年版が発表されたので読みました。振り返えれるように関心が高い部分だけまとめます。 はじめに 「キャッシュレス・ロードマップ2023」の策定に向けては、社会…

Amazon Auroraのフェイルオーバーに向けたMySQL JDBCドライバーの検証

Amazon Auroraのフェイルオーバーに対応したMySQL JDBCドライバー、「aws-mysql-jdbc」と「aws-advanced-jdbc-wrapper」の検証。

LocalStack 2.0でAWSクラウドリソースをローカル環境でシミュレート

先日、LocalStack 2.0がリリースされたので、Spring Bootアプリケーションで利用してみます。 LocalStack 1.0と2.0の違いをChatGPTに聞いてみました。 LocalStack 1.0とLocalStack 2.0は、AWSクラウドリソースをローカル環境でシミュレートするために使用さ…

ECS Fargate上で動いているJavaアプリケーションにDatadogを導入する

ECS Fargate上で動いているJavaアプリケーションにDatadogを導入する手順をまとめます。 本記事の環境 - Java 11 - Gradle 7.0.2 - Spring Boot 2.5.1 - Jib 3.3.1 大まかな流れ Gradleプロジェクトでアプリケーションを作る ECS Fargate環境を用意する ECS …

RestTemplateのエラーハンドリング

Spring Frameworkの RestTemplate.class を使った通信のエラーハンドリングの仕方についてまとめます。 今回の環境 Java 17 Spring Boot 2.7.4 試してみた Client APIからリクエストを受けるAPI(Server) @RestController @RequestMapping("/server") publi…

Spring Bootアプリケーションが起動するまでにやっていること

本記事は、Spring Boot 2.7.3について書いてあります。 Spring Bootとは Spring Bootはフレームワークでなく、Spring Frameworkを利用してアプリケーションを作りやすくしている仕組みのこと。 Spring Boot単体では何も作ることはできないので、Spring Webや…

MySQL徹底入門 第4版を読んで

運用に必要な知識 MySQLのプロセスアーキテクチャ MySQLはシングルプロセス・マルチスレッドモデルのデータベース。 psコマンドのauxや-elfなどのオプションではmysqldのプロセスは1つしか見えない。 内部的には複数のスレッドを使い分けている スレッドは、…

Spring 非同期処理とリトライ処理

お仕事でSpringの非同期処理とリトライ処理に触れることがあったので、まとめておきます。 Spring MVCの非同期処理の細かい話については、こちらを参照してください。 今回の環境 Java 11 Spring Boot 2.5.2 @Asyncを使った非同期処理 @org.springframework.…

Docker上で起動したPrometheusを使って、Micrometerで収集したメトリクス可視化する

Amazon Managed Service for Prometheusが値下げされるという 記事 を見かけて、「そろそろMicrometerのモニタリングシステムをCloud Watchから乗り換えるか」って気持ちになったのでPrometheusをサクッと試してみました。 Prometheusとは Prometheusは、Sou…

JenkinsからGitHub Actionsへの移行をキメた

社のCI/CDをJenkinsからGitHub Actionsに移行しました。公式ドキュメント読み倒してたくさんのymlを書いたので、tipsでも残して置きます。 環境 レポジトリは15くらい デプロイ環境は、Amazon ECSとAWS Elastic Beanstalk アプリケーションは全部Java / Spri…

Drive API Client Library for Javaで遊ぶ

Drive API Client Library for Javaで遊んだのでまとめます。 環境 - Java 11 - Spring Boot 2.4.4 - Google Auth Library 0.25.2 - Drive API Client Library for Java v3-rev20210315-1.31.0 GCPコンソール側の設定 google drive の Quickstart(サービス…

SpringのロギングとExceptionハンドリング再入門

同僚氏のPRレビューをするにあたって、ロギング、Exceptionハンドリングよくわかってないなって思って再入門してみた。 「@ExceptionHandlerのメソッドでハンドリングしたときのレスポンスをログ出力する」というのがPRの内容だった。 「1.どこでアクセス(…

Effective Javaを読んで

もっとちゃんとJavaのこと理解したいなと思って、Effective Javaを読んだ。 オブジェクトの生成と消滅 コンストラクタの代わりにstaticファクトリメソッドを検討する staticファクトリメソッドのメリット コンストラクタと異なって、名前を持つから返される…

Bitbucket pipelineのドキュメント読んだ

2020年10月にBitbucketのサーバーライセンスの販売終了が発表されました。個人でいただいている仕事の方でBitbucket Serverを利用しており、BitBucket Cloudへの移行が必要になりました。 Bitbucket CloudのデフォルトCI/CDであるBitbucket Pipelinesを利用…

Spring Security 5.4(Spring Boot 2.4)から不正なURLでのリクエストに任意のステータスコードを返せるようになった

Spring Security 5.4(Spring Boot 2.4)から不正なURLでのリクエストに対して、任意のステータスコードを返せるようになりました。とっても嬉しい!!! Spring SecurityのHttpFirewall 公式ドキュメント#HttpFirewall に詳しく書いてあるのですが、Spring Se…

Spring BootアプリケーションでAWS Systems Manager パラメータストアを利用する

Spring Bootのアプリケーション起動時に、AWS Systems Manager パラメータストアからパラメータを取得できるみたいなので試してみました。 AWS Systems Manager パラメータストアとは 設定データ管理と機密管理のための安全な階層型ストレージを提供してくれ…

springdoc-openapiでOpenAPI形式のAPIドキュメントを生成する

こんにちは! みなさん、API Spec書いてますか?私はお仕事で、OpenAPI(Swagger)形式のYAMLを書いています! ソースコードとドキュメントを別にしてしまうと、実装途中で仕様変更になったときにyml書き直すのが手間だったり、APIの実装と合ってない箇所があ…

Spring Cloud OpenFeignで遊ぶ

先日のSpring Oneで、Unleash the True Power of Spring Cloud: Learn How to Customize Spring Cloudで紹介されていたSpring Cloud OpenFeignで遊んでみました。 素敵すぎて、もっと早く知りたかった...と感じました。 Spring Cloud OpenFeignとは 2018年6…

Spring Boot 1.5.xから2.0.xに上げた Spring Test編

Spring Boot 2系にあげたときにやったことをまとめようと思います。関連記事 今回は、Testingの話です。Spring Boot 2.0.9.RELEASEに上げた話になります。2.2対応はまたいつか書きます。 依存しているライブラリのバージョン Spring Bootのバージョンを1.5.2…

Spring Boot 1.5.xから2.0.xに上げた Spring Data編

Spring Boot 2系にあげたときにやったことをまとめようと思います。関連記事 今回は、Spring Data JPAの話です。Spring Boot 2.0.9.RELEASEに上げた話になります。2.2対応はまたいつか書きます。 依存しているライブラリのバージョン Spring Bootのバージョ…

Spring Boot 1.5.xから2.0.xに上げた Spring Web編

Spring Boot 2系にあげたときにやったことをまとめようと思います。(関連記事) 今回は、Spring Webの話です。Spring Boot 2.0.9.RELEASEに上げた話になります。2.2対応はまたいつか書きます。 依存しているライブラリのバージョン Spring Bootのバージョン…

Flyway 3.x -> 5.xに上げた

Spring Boot2系にあげたときにやったことをまとめようと思います。(関連記事) 今回は、Flywayの話です。バージョンアップ後のSpring Bootのバージョンは2.0.9.RELEASEです。2.2対応はまたいつか書きます。 FlywayとSpring Boot Flywayは、データベースマイ…

Gradle 4.x -> Gradle 5.xに上げた

Spring Boot2系にあげたときにやったことをまとめようと思います。関連記事 今回はGradleの話です。Upgrading your build from Gradle 4.x to 5.0を参考に作業しました。 これだけじゃなかったと思うので、思い出したら追記します。もうGradle 6出ているんで…

Spring Cloud Contractで遊んでみた #1

Spring Cloud Contractを触ってみようと思ったきっかけは、会社での SwaggerでAPI仕様書を書く -> レビュー -> 実装 という開発フロー問題を感じているからです。 このフローには 1.実装とAPI仕様書で乖離してしまう恐れがある 、 2.いちいちAPI仕様書を書く…

ユニットテストで@ConfigurationPropertiesが有効になるようにしたい!

ここ数年で何回かぶち当たってたことが解決したので備忘録として。内容はタイトルの通りです。 @SpringBootTest を使ってテスト書けば設定ファイルを読み込んでくれるので悩む必要はないんですけど、大人の事情でそういうことができない場合もありますよね。…

@DataJpaTestでRepositoryのテスト

テスト書いてますか?私は好きです!嫌いな人は多いみたいですけど... Springのテスト部分のリファレンス読んで忘れないうちにまとめよう精神が働いたので書きます。 今回は、@DataJpaTestというレポジトリのテストを書くためのアノテーションを紹介します。…

Javaパフォーマンス本を読んで #2

第3章 Javaパフォーマンスのツールボックス パフォーマンス分析は可視化と表裏一体です。アプリケーションの内部や、その実行環境で起こっていることを知るのがパフォーマンス分析で、可視化にはツールが不可欠です。 オペレーティングシステム付属のツール…

Javaパフォーマンス本を読んで #3

第5章 ガベージコレクションの基礎 ガベージコレクションの概要 Java言語の最も魅力的な特徴の1つに、開発者がオブジェクトのライフサイクルを管理しなくてもよいという点があります。ガベージコレクションとは基本的に、使われなくなったオブジェクトを探…

Javaパフォーマンス本を読んで #4

第7章 ヒープのベストプラクティス 一般的には、オブジェクトを生成する回数を減らし、必要なくなったらすぐに廃棄すべきというルールがある。一方、同じ種類のオブジェクトをなんども生成するのは全体としてのパフォーマンスの悪化に繋がります。このような…