何にハマったの?
こんな感じで設定して、複数のデータソースを扱おうと思ったの。
(設定クラスで @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 って明示的に指定してあげなきゃいけなかったぽい。