Springboot-静态类/属性读取配置文件内容
一、通过@Value方式读取配置文件内容
- 配置文件内容
dingtalk:
msg:
agentId: 123
appKey: 456
- 新建一个Util来获取配置信息
public class DingDingPropUtil {
private static String appId;
private static String appKey;
@Value("dingtalk.msg.appId")
private String appIdProp;
@Value("dingtalk.msg.appKey")
private String appKeyProp;
@PostConstruct
public void getApiToken() {
appId = this.appIdProp;
appKey = this.appKeyProp;
}
public static String getAppId(){
return appId;
}
public static String getAppkey(){
return appKey;
}
public static void initDingDingProp(DingDingProperties dingProperties){
agentId = dingProperties.getAgentId();
appKey = dingProperties.getAppKey();
appSecret = dingProperties.getAppSecret();
}
}
-
注意事项
首选要在util里建一个static的变量,然后使用@Value获取yml配置文件的值。最后关键就是使用 @PostConstruct 熟悉将yml中配置的值赋给本地的变量,这样后面的静态方法就能使用了。
注意util类使用了 @Component 属性注解了说明是需要在启动类 Application 启动的时候加载的,
所以本地写一个方法调用 util 的时候是获取不到值的。
一、通过@Value方式读取配置文件内容
- 工具类增加静态变量初始化方法init
public class DingDingPropUtil {
public static String agentId;
public static String appKey;
public static String appSecret;
public static void initDingDingProp(DingDingProperties dingProperties){
agentId = dingProperties.getAgentId();
appKey = dingProperties.getAppKey();
appSecret = dingProperties.getAppSecret();
}
}
- 具体bean对象读取配置文件
@Component
@ConfigurationProperties(prefix = "dingtalk.msg")
public class DingDingProperties {
public String agentId = "1111111";
public String appKey = "ddddddd";
public String appSecret = "123456";
public String getAgentId() {
return agentId;
}
public void setAgentId(String agentId) {
this.agentId = agentId;
}
public String getAppKey() {
return appKey;
}
public void setAppKey(String appKey) {
this.appKey = appKey;
}
public String getAppSecret() {
return appSecret;
}
public void setAppSecret(String appSecret) {
this.appSecret = appSecret;
}
}
- 增加代理类,代理类构造方法中调用工具类静态属性的初始化方法
@Component
public class DingDingPropProxy {
public DingDingPropProxy(DingDingProperties dingProperties){
DingDingPropUtil.initDingDingProp(dingProperties);
}
}
- 使用
public static void main(String[] args) {
System.out.println(DingDingPropUtil.appKey);
System.out.println(DingDingPropUtil.agentId);
}