正如 M. Deinum 所提到的@EnableConfigurationProperties
用于启用支持@ConfigurationProperties
。如果您查看注释 Java Doc,您可以看到:
启用对 ConfigurationProperties 带注释的 bean 的支持。 ConfigurationProperties bean 可以以标准方式注册(例如使用 Bean @Bean 方法),或者为了方便起见,可以直接在此注释上指定。 [...]
例如,假设您有一个类,其职责是读取和存储来自您的信息application.yml
/ application.properties
这是建立到不同数据库的连接所必需的。你用它来注释它@ConfigurationProperties
.
然后,你通常有一个@Configuration
带注释的类提供了DataSource
@Bean
到您的应用程序。您可以使用@EnableConfigurationProperties
将其链接到@ConfigurationProperties
类并相应地初始化您的数据源。
这是一个小例子:
应用程序.yml
data-sources:
db1:
url: "jdbc:postgresql://localhost:5432}/db1"
username: test
password: test
db2:
url: "jdbc:postgresql://localhost:5432}/db2"
username: test
password: test
数据源配置
@ConfigurationProperties
public class DataSourcesConfiguration {
private Map<String, BasicDataSource> dataSources;
public void setDataSources(Map<String, BasicDataSource> dataSources) {
this.dataSources = dataSources;
}
Map<String, BasicDataSource > getDataSources() {
return dataSources;
}
}
数据源连接配置
@Configuration
@EnableConfigurationProperties(DataSourcesConfiguration.class)
public class DatabaseConnectionConfiguration implements Provider<Connection> {
private DataSourcesConfiguration dataSourcesConfiguration;
public DatabaseConnectionConfiguration(DataSourcesConfiguration dataSourcesConfiguration) {
this.dataSourcesConfiguration = dataSourcesConfiguration;
}
@Bean
public DataSource dataSource() {
// Use dataSourcesConfiguration to create application data source. E.g., a AbstractRoutingDataSource..
}
}