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

时间:2018-06-05 08:36:05

标签: spring-boot

我目前已配置spring boot以使用两个不同的数据源。该应用程序运行正常,但是当我启动弹簧启动应用程序时,我会重复警告10次,如下所示:

  

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

正如我所提到的,这并没有影响我的申请,但我想知道为什么我会收到这种警告,如果有办法解决它。

1 个答案:

答案 0 :(得分:0)

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

您很可能在application.properties文件中具有相关的数据库详细信息,例如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

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

@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();
}