我們在當初學習SSM的時候學習過@Value這個屬性,可以將配置文件中的屬性加載到想要加載的類中,這個當然是一個可行的辦法,但是如果屬性有很多一直寫@Value也是一件很麻煩的事情,現在我們可以用@ConfigurationProperties和@EnableConfigurationProperties這兩個注解完成這個問題。
具體應用
- 配置文件如下:
whoami:
auto-scan: false
auto-del: true
上面的配置文件就相當於一個例子,沒有什么作用
下面我們寫自定義的屬性類
- 屬性類:
@ConfigurationProperties(prefix = "whoami")的作用就是將whoami的前綴的配置加載到這個實體類中
@Data
@ConfigurationProperties("whoami")
public class AppProperties {
private Boolean autoDel = false;
private Boolean autoScan = true;
}
在這里我們可以看出來,實體類里面的屬性默認值和配置文件正相反,而且配置文件的屬性寫法是'-'風格,而自定義文件里面的是駝峰寫法,其實只要能對應就完全沒問題。
- 驗證一下是否導入
先說一下@EnableConfigurationProperties的作用,其實就是讓@ConfigurationProperties生效
@Configuration
@EnableConfigurationProperties(AppProperties.class)
public class FilterConfiguration {
@Autowired
AppProperties appProperties;
@Bean
public FilterRegistrationBean<LogFilter> initLogFilter(){
log.info("屬性配置;{}",appProperties.getAutoDel());
...
上面的代碼是一個配置類,我們可以看到,我們在初始化一個過濾器的時候順便打印了AutoDel這個屬性,,運行一下,可以看到打印台的信息

在這里我們可以看到,打印出來的是我們配置文件的信息。
