在Spring Boot 1.5.x之前,多数据源编程已经有很多教程和例子了,比如恒宇少年的博客还有程序猿DD的博客,我就是在两位大拿的教程下学习的。
但是在升级到Spring Boot 2.0后,一些配置及用法有了变化,如果不小心就会碰到“jdbcUrl is required with driverClassName.”的错误,解决方式有以下两种:
方法1:将配置文件application.properties中使用的spring.datasource.primary.url=xxxxx替换为spring.datasource.primary.jdbc-url=xxxx,如下所示:
方法2:在数据源配置时重写DataSourceProperties对应的实体初始化
@Primary //配置该数据源为主数据源
@Bean(name = "primaryDataSourceProperties")
@Qualifier(value = "primaryDataSourceProperties") //spring装配bean的唯一标识
@ConfigurationProperties(prefix = "spring.datasource.primary") //application.properties配置文件中该数据源的配置前缀
public DataSourceProperties primaryDataSourceProperties(){
return new DataSourceProperties();
}
@Primary //配置该数据源为主数据源
@Bean(name = "dataSource")
@Qualifier(value = "dataSource") //spring装配bean的唯一标识
@ConfigurationProperties(prefix = "spring.datasource.primary") //application.properties配置文件中该数据源的配置前缀
public DataSource dataSource(){
return primaryDataSourceProperties().initializeDataSourceBuilder().type(HikariDataSource.class).build();
// return primaryDataSourceProperties().initializeDataSourceBuilder().build();
}
@Bean(name = "secondaryDataSourceProperties")
@Qualifier(value = "secondaryDataSourceProperties") //spring装配bean的唯一标识
@ConfigurationProperties(prefix = "spring.datasource.second") //application.properties配置文件中该数据源的配置前缀
public DataSourceProperties secondaryDataSourceProperties(){
return new DataSourceProperties();
}
@Bean(name = "secondDataSource")
@Qualifier(value = "secondDataSource") //spring装配bean的唯一标识
@ConfigurationProperties(prefix = "spring.datasource.second") //application.properties配置文件中该数据源的配置前缀
public DataSource secondDataSource(){
return secondaryDataSourceProperties().initializeDataSourceBuilder().type(HikariDataSource.class).build();
// return secondaryDataSourceProperties().initializeDataSourceBuilder().build();
}