如果已经使用@ConfigurationProperties注释了bean,则@EnableConfigurationproperties有什么区别?

如果已经使用@ConfigurationProperties注释了bean,则@EnableConfigurationproperties有什么区别?,第1张

如果已经使用@ConfigurationProperties注释了bean,则@EnableConfigurationproperties有什么区别?

正如Deinum
M.所说的

@EnableConfigurationProperties
是为了支持
@ConfigurationProperties
。如果查看批注Java
Doc,您将看到:

启用对带注释的ConfigurationProperty的支持。可以以标准方式(例如,使用Bean
@Bean方法)注册ConfigurationProperties
Bean,或者为方便起见,可以在此批注上直接指定ConfigurationProperties Bean。[…]

例如,假设您有一个类,该类的职责是从

application.yml
/
application.properties
中读取和存储与不同数据库建立连接所需的信息。您用注释它
@ConfigurationProperties

然后,通常会有一个带

@Configuration
注释的类
DataSource

@Bean
为您的应用程序提供一个。您可以使用将
@EnableConfigurationProperties
其链接到
@ConfigurationProperties
该类并相应地初始化您的数据源

这是一个小例子:

application.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

数据源配置

@ConfigurationPropertiespublic class DataSourcesConfiguration {    private Map<String, BasicDataSource> dataSources;    public void setDataSources(Map<String, BasicDataSource> dataSources) {        this.dataSources = dataSources;    }    Map<String, BasicDataSource > getDataSources() {        return dataSources;    }}

DataSourceConnectionConfiguration

@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..    }}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5662427.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-16
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存