配置数据源
自定义DataSource
类型的@Bean
可以覆盖默认设置。
@Bean
@ConfigurationProperties(prefix="datasource.fancy")
public DataSource dataSource() {
return new FancyDataSource();
}
datasource.fancy.jdbcUrl=jdbc:h2:mem:mydb
datasource.fancy.username=sa
datasource.fancy.poolSize=30
Spring Boot也提供了一个工具类DataSourceBuilder
用来创建标准的数据源。如果需要重用DataSourceProperties
的配置,你可以从它初始化一个DataSourceBuilder
:
@Bean
@ConfigurationProperties(prefix="datasource.mine")
public DataSource dataSource(DataSourceProperties properties) {
return properties.initializeDataSourceBuilder()
// additional customizations
.build();
}
在此场景中,你保留了通过Spring Boot暴露的标准属性,通过添加@ConfigurationProperties
,你可以暴露在相应的命命名空间暴露其他特定实现的配置。
配置两个数据源
创建多个数据源和创建一个工作都是一样的,如果使用JDBC或JPA的默认自动配置,你需要将其中一个设置为@Primary
(然后它就能被任何@Autowired
注入获取)。
@Bean
@Primary
@ConfigurationProperties(prefix="datasource.primary")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties(prefix="datasource.secondary")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}