@ConfigurationProperties + @EnableConfigurationProperties


1、ConfigurationProperties

在類上通過@ConfigurationProperties注解聲明當前類為屬性讀取類。

舉例:

@ConfigurationProperties(prefix = "jdbc")

prefix="jdbc" 讀取屬性文件中,前綴為jdbc的值。

在類上定義各個屬性,名稱必須與屬性文件中 jdbc. 后面部分一致。

需要注意的是,如果我們沒有指定屬性文件的地址,SpringBoot 默認讀取 application.properties/application.yml  中的屬性文件名。

@Data
@ConfigurationProperties(prefix = "jdbc")
class JdbcProperties {

    private String url;
    private String driverClaprivate;
    private String username;
    private String password;
}

 

2、EnableConfigurationProperties

@ConfigurationProperties 注解我們可以理解成用來把 properties 配置文件轉化為 Bean 使用的,而 @EnableConfigurationProperties 注解的作用是讓 @ConfigurationProperties 注解生效。

如果只配置 @ConfigurationProperties 注解,在 IOC 容器中是獲取不到 properties 配置文件轉化的 Bean 的。

那么我們如何獲取我們使用了 @ConfigurationProperties 注解的類呢?

2.1 @Autowired 注入

@Autowired
private JdbcProperties prop;

2.2 構造函數注入

private JdbcProperties prop;
public JdbcConfig(Jdbcproperties prop){
  this.prop = prop;
}

2.3 聲明有@Bean的方法參數注入

@Bean
public TestBean dataSource(JdbcProperties jdbcProperties) {
    syso(jdbcProperties.getUsername());// syso 簡寫
    return new TestBean;
}

通過上方三種方式,都可以在 JdbcProperties jdbcProperties 中直接拿到注入的數據。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM