何にハマったの?
こんな感じで設定して、複数のデータソースを扱おうと思ったの。
(設定クラスで @ConfigurationProperties(prefix = "spring.datasource.develop")
って指定しつつ、みたいな)
spring.datasource.develop.url=jdbc:mysql://develop.com:3306
spring.datasource.develop.username=user
spring.datasource.develop.password=user
spring.datasource.develop.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.product.url=jdbc:mysql://product.com:3306
spring.datasource.product.username=user
spring.datasource.product.password=user
spring.datasource.product.driver-class-name=com.mysql.cj.jdbc.Driver
でも怒られちゃった。
Caused by: java.lang.IllegalArgumentException: jdbcUrl is required with driverClassName.
url
指定してるじゃんんん!
どうやって解決したの?
結論、こんな感じ。
spring.datasource.develop.jdbcUrl=jdbc:mysql://develop.com:3306
url
を jdbcUrl
に置き換えただけ。これで問題なくアプリケーションを起動できた。
何がダメだった?
今回、コネクションプールライブラリは HikariCP
を利用。
springの標準の url
プロパティをコネクションプールの jdbcURL
にマッピングできなかったがゆえに怒られてた。
(spring.datasource.url
の datasource
と url
の間にデータソース名を入れたためにマッピングに失敗しちゃってた)
単体のデータソースを扱う場合は、develop
とかを入れたカスタムフィールドにしないから自動マッピングでいい感じにしてくれてたけど、
今回はカスタムしちゃったから自動マッピングしてくれず。
@CofigurationProperties
アノテーションで手動マッピング(という表現が正しいかは置いといて)だったからこそ jdbcUrl
って明示的に指定してあげなきゃいけなかったぽい。