在SpringBoot項目中狈茉,我們經(jīng)常會將一些參數(shù)放在配置文件中(.properties或.yml)绞蹦,然后通過@value
注解獲取配置的值宾毒。
但如果參數(shù)字段很多,這種方式就顯得不那么方便了:
- 參數(shù)字段在哪里使用宏所,是否必須不清晰,需要全局搜索查看使用的地方摊溶;
- 參數(shù)key容易拼寫錯誤爬骤;
實際上SpringBoot提供了更加方便的方式:@ConfigurationProperties
注解可以將自定義參數(shù)導(dǎo)入到實體對象中。
首先我們定義一個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或自動掃描到這個類,當(dāng)需要實例化這個對象時拉岁,自動將對應(yīng)的參數(shù)aib.msg
的設(shè)置到這個對象中坷剧。
在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è)置默認(rèn)值;
- 參數(shù)key提示哄啄;