警告:在使用两个数据源的 springboot 中,未加载 JDBC 驱动程序,因为 driverClassName 属性为 null

Joa*_*epi 6 spring-boot

我目前已将 Spring Boot 配置为使用两个不同的数据源。该应用程序工作正常,但是当我启动 spring boot 应用程序时,我收到重复 10 次的警告,如下所示:

2018-06-05 10:28:15.897 WARN 8496 --- [r://myScheduler] oatomcat.jdbc.pool.PooledConnection:未加载 JDBC 驱动程序,因为 driverClassName 属性为空。

正如我提到的,这不会影响我的应用程序,但我想知道为什么我会收到这种警告,以及是否有任何方法可以解决它。

小智 6

当使用两个或更多数据源时,您需要自己配置它们。在这种情况下,不会使用 Spring Boot 的 DataSourceAutoConfiguration(以及 DataSourceProperties)。

您很可能在 application.properties 文件中拥有相关的 DB 详细信息,例如 JDBC 驱动程序类名称的名称,如下所示:

spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver

primary.datasource.url=jdbc:sqlserver://xxx.yyy.zzz.www:1433;databaseName=primaryDB
primary.datasource.username=username
primary.datasource.password=password

other.datasource.url=jdbc:sqlserver://xxx.yyy.zzz.www:1433;databaseName=otherDb
other.datasource.username=otheruser
other.datasource.password=otherpassword
Run Code Online (Sandbox Code Playgroud)

因此,要为数据源设置驱动程序类名称,只需说:

@Value("${spring.datasource.driver-class-name}")
String driverClassName;

@Primary
@Bean(name = "primaryDb")
@ConfigurationProperties(prefix = "primary.datasource")
public DataSource primaryDataSource() {
    return DataSourceBuilder.create().driverClassName(driverClassName).build();
}

@Bean(name = "otherDb")
@ConfigurationProperties(prefix = "other.datasource")
public DataSource otherDataSource() {
    return  DataSourceBuilder.create().driverClassName(driverClassName).build();
}
Run Code Online (Sandbox Code Playgroud)