如果@ConfigurationProperties将属性绑定到对象中,则@ConfigurationProperties在构建数据源时有何用途?
application.properties
#Database
database1.datasource.url=jdbc:mysql://localhost/testdb
database1.datasource.username=root
database1.datasource.password=root
database1.datasource.driver-class-name=com.mysql.jdbc.Driver
数据源Bean:
@Bean(name = "datasource1")
@ConfigurationProperties("database1.datasource")
@Primary
public DataSource dataSource(){
return DataSourceBuilder.create().build();
}
另外,如果数据源属性已经在单独的bean中使用@ConfigurationProperties绑定,我们是否仍需要在“数据源”构建器bean中放置相同的注释?
@Bean
@ConfigurationProperties("database1.datasource")
public DataSourceProps dataSourceProps(){
return new DataSourceProps();
}
@Bean(name = "datasource1")
// @ConfigurationProperties("database1.datasource") Is this necessary?
@Primary
public DataSource dataSource(){
return dataSourceProps().initializeDataSourceBuilder().type(HikariDataSource.class).build();
}
不,您不需要放@ConfigurationProperties("database1.datasource")
第二个bean。它不会达到任何目的。但是,如果您放置@ConfigurationProperties("database1.datasource.hikari")
第二个bean,它将配置您的HikariDataSource。例如,您有一个属性文件,例如
mysql.datasource.url=jdbc:mysql://localhost:3306/test
mysql.datasource.username=root
mysql.datasource.password=password
mysql.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
mysql.datasource.hikari.minimum-idle=3
mysql.datasource.hikari.maximum-pool-size=8
你的配置就像
@Bean
@ConfigurationProperties("mysql.datasource")
public DataSourceProperties mysqlDataSourceProperties() {
return new DataSourceProperties();
}
@Bean
@ConfigurationProperties("mysql.datasource.hikari")
public DataSource mysqlDataSource() {
return mysqlDataSourceProperties().initializeDataSourceBuilder()
.type(HikariDataSource.class).build();
}
第一个bean创建一个DataSourceProperties,其数据库URL,用户名和密码随一起提供mysql.datasource.*
。如果不添加,@ConfigurationProperties("mysql.datasource.hikari")
spring将使用默认值配置hikari数据连接池,并且您将无法通过更改属性文件来更改它们。因此两个配置属性服务器有两个不同的用途。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句