こんにちは。 エキサイト株式会社の三浦です。
今回は、Spring Bootのアップデートによって、DB設定がちょっと簡単になった話をします。
Spring BootとDB設定
Spring BootでDBと接続したい場合、 application.yml
ファイルに以下のように設定します。
spring: datasource: url: jdbc:mysql://localhost:3306/sample_db username: sample_user password: sample_password driver-class-name: com.mysql.cj.jdbc.Driver
基本的にはこれで良いはずなのですが、実は状況次第では、これではDBと接続できないことがありました。
DB設定とTLSバージョン
この「状況」というのは、端的に言えば各種バージョンのことです。
私のときは、以下のバージョンでの開発で発生しました。
- Java 11.0.13 - Spring Boot 2.4.3
原因は、DBとの接続時のTLSバージョンです。
TLS1.2
でないと接続できないにもかかわらず、デフォルトでは TLS1.1
で接続しに行ってしまうため、接続エラーが起きていたのでした。
これを解決するためには、DBのURLに以下のパラメータをつければOKです。
spring: datasource: url: jdbc:mysql://localhost:3306/sample_db?enabledTLSProtocols=TLSv1.2 username: sample_user password: sample_password driver-class-name: com.mysql.cj.jdbc.Driver
明示的に指定することで TLS1.2
で接続してくれるようになり、問題がなくなります。
新バージョンでは指定が不要になった
この指定ですが、実は新しいバージョンでは指定が不要になりました!
少なくとも以下のバージョンでは、指定しなくても接続できることを確認しています。
- Java 17.0.2 - Spring Boot 2.6.6
最後に
ちょっとしたことですが、ハマると少し解決までに時間がかかるところだったので、とてもありがたいです。
新しいJava・Spring Bootを最初から使っている人にはあまり関係ないかもですが、現時点でTLSバージョン指定が必要なものを使っている人や、バージョンを上げたがまだTLSバージョン指定を残している人の参考になれば幸いです。