Я следовал документации и создал некоторый исходный код, который совершенно идентичен приведенному примеру. Когда я запускаю свой код, я получаю это исключение:
java .lang.RuntimeException: драйвер org.mariadb.jdb c .Driver утверждает, что не принимает jdbcUrl, jdb c: h2 : mem: testdb; DB_CLOSE_DELAY = -1; DB_CLOSE_ON_EXIT = FALSE
Странно то, что две вещи смешаны:
- h2-jdbcUrl обрабатывается mariaDB -driver
- запрос, который мой ранее существующий код выполняет, нацелен на mariaDB (я еще не написал ни одного кода, использующего второй источник данных)
Это мои компоненты:
@Bean
@Primary
@ConfigurationProperties("datasources.first")
public DataSourceProperties firstDataSourceProperties() {
return new DataSourceProperties();
}
@Bean
@Primary
@ConfigurationProperties("datasources.first.configuration")
public HikariDataSource firstDataSource() {
return firstDataSourceProperties().initializeDataSourceBuilder().type(HikariDataSource.class).build();
}
@Bean
@ConfigurationProperties("datasources.second")
public DataSourceProperties secondDataSourceProperties() {
return new DataSourceProperties();
}
@Bean
@ConfigurationProperties("datasources.second.configuration")
public HikariDataSource secondDataSource() {
return secondDataSourceProperties().initializeDataSourceBuilder().type(HikariDataSource.class).build();
}
Мой application.yml выглядит следующим образом:
datasources:
first:
jdbcUrl: jdbc:mariadb://...
username: ...
password: ...
driver-class-name: org.mariadb.jdbc.Driver
second:
jdbcUrl: jdbc:h2:/tmp/test;DB_CLOSE_ON_EXIT=FALSE
username: ...
password: ...
driver-class-name: org.h2.Driver
Этот код вызывает исключение:
@Component
public class Updater {
@Autowired
JdbcTemplate jdbcTemplate;
@Autowired
Queries queries;
public List<User> getActiveUsers() throws Exception {
List<User> users = jdbcTemplate.query(queries.getActive(), new UserRowMapper());
return users;
}
Для дальнейшей диагностики я включил конечные точки configprops
и beans
и проверили их вывод. Конфиг выглядит хорошо, и бины тоже:
Конфиг (один из многих):
"firstDataSourceProperties": {
"prefix": "datasources.first",
"properties": {
"password": "******",
"initializationMode": "EMBEDDED",
"driverClassName": "org.mariadb.jdbc.Driver",
"generateUniqueName": false,
"xa": {
"properties": {}
},
"separator": ";",
"platform": "all",
"continueOnError": false,
"username": "..."
}
Бин (один из многих):
"firstDataSource": {
"aliases": [],
"scope": "singleton",
"type": "com.zaxxer.hikari.HikariDataSource",
"resource": "...Application",
"dependencies": [
"firstDataSourceProperties"
]
}
Я использую Spring Ботинок 2.2.6