在SpringBoot項目中,我們經(jīng)常會將一些參數(shù)放在配置文件中(.properties或.yml),然后通過@value 注解獲取配置的值。
但如果參數(shù)字段很多,這種方式就顯得不那么方便了:
- 參數(shù)字段在哪里使用,是否必須不清晰,需要全局搜索查看使用的地方;
- 參數(shù)key容易拼寫錯誤;
實際上SpringBoot提供了更加方便的方式:@ConfigurationProperties 注解可以將自定義參數(shù)導入到實體對象中。
首先我們定義一個bean,并添加注解:
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "aib")
public class AIBProperties {
private String msg;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
添加了@Component和@ConfigurationProperties之后,SpringBoot或自動掃描到這個類,當需要實例化這個對象時,自動將對應的參數(shù)aib.msg的設置到這個對象中。
在IDEA中會出現(xiàn)下面警告:

提示.png
是提示你添加一個依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
添加玩依賴之后,提示會變成:

提示2.png
這個時候已經(jīng)可以了,我們reBuild一下項目:

reBuild.png
build完成我們可以在target/class/META-INF/包下看到一個.json文件:

metadata.png
有了這個文件配合IDEA就可以實現(xiàn)提示效果:

hint.png
使用properties只需要注入bean即可:
@Autowired
AIBProperties properties;
@GetMapping
public String test() {
return properties.getMsg();
}
這樣做的好處:
- 參數(shù)在一個bean中同一管理;
- 直接設置默認值;
- 參數(shù)key提示;