Как настроить несколько источников данных с драйвером класса в Spring? - PullRequest
2 голосов
/ 18 июня 2019

Почему класс драйвера отсутствует в следующей конфигурации?

spring.datasource.testdb.url=jdbc:mariadb://localhost/mytable
spring.datasource.testdb.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.testdb.username=test
spring.datasource.testdb.password=test


@Configuration
public class DataSourceConfig {
    @ConfigurationProperties(prefix = "spring.datasource.testdb")
    @Primary
    public DataSource dataSourceTest() {
        return DataSourceBuilder.create().build();
    }

    @Bean
    @Primary
    public JdbcTemplate jdbcTemplateTest() {
        return new JdbcTemplate(dataSourceTest());
    }

    //secondary db config to follow
}

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>

    <dependency>
        <groupId>org.mariadb.jdbc</groupId>
        <artifactId>mariadb-java-client</artifactId>
    </dependency>
</dependencies>

Результат:

Не удалось настроить источник данных: атрибут 'url' не указан и встроенный источник данных не может быть настроен. Причина: не удалось определить подходящий класс водителя

Это странно, потому что я даже могу войти в класс org.mariadb.jdbc.Driver, так что он явно на пути к классам.

Ответы [ 2 ]

2 голосов
/ 18 июня 2019

Похоже, вам просто нужно добавить аннотацию @Bean в dataSourceTest ().

@Bean
@ConfigurationProperties(prefix = "spring.datasource.testdb")
@Primary

Кроме того, для пула соединений Hikari (который является пулом соединений по умолчанию) свойство url имеет вид jdbc-url, а не url. Так что поменяй

spring.datasource.testdb.url=jdbc:mariadb://localhost/mytable

до

spring.datasource.testdb.jdbc-url=jdbc:mariadb://localhost/mytable

Для получения дополнительной информации и других возможных решений см .: После перехода с Spring Boot 2.0: требуется jdbcUrl с driverClassName

Надеюсь, это поможет.

0 голосов
/ 18 июня 2019

Вы уверены, что файл свойств загружается правильно?В сообщении четко указывается, что атрибут url не был указан, поэтому, очевидно, строка spring.datasource.testdb.url=jdbc:mariadb://localhost/mytable не читается - путь к классу драйвера не имеет к этому никакого отношения.

По умолчанию строки должны быть в файле application.properties, это где они у вас есть?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...