Недавно работал над переносом кода в Spring Boot 2.x и столкнулся с проблемой настройки bean-компонента источника данных. У нас есть два источника данных, поэтому мы строим компоненты DataSource вручную, используя DataSourceBuilder.
Согласно документации , я устанавливаю следующие свойства:
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.username=sa
spring.datasource.password=
Однако, когда я это делаю, я получаю следующую ошибку:
java.lang.IllegalArgumentException: jdbcUrl is required with driverClassName.
at com.zaxxer.hikari.HikariConfig.validate(HikariConfig.java:1059) ~[HikariCP-2.7.9.jar:na]
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:109) ~[HikariCP-2.7.9.jar:na]
Если я изменю свои настройки, чтобы сделать это:
spring.datasource.jdbcUrl=jdbc:mysql://localhost/test
тогда это работает.
Это также работает для одного источника данных, если я закомментирую bean-компонент, который явно создает источник данных, что наводит меня на мысль, что есть проблема в коде источника данных.
Пример репозитория с одним источником данных, показывающим проблему, доступен здесь: https://github.com/azizabah/hikari-issue
Так что же изменилось между SB 1.5.X и SB 2.X с точки зрения конфигурации при наличии нескольких источников данных?