Springboot-静态类/属性读取配置文件内容

Springboot-静态类/属性读取配置文件内容

一、通过@Value方式读取配置文件内容

  1. 配置文件内容
dingtalk:
  msg:
    agentId: 123
    appKey: 456
  1. 新建一个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();
    }

}
  1. 注意事项
    首选要在util里建一个static的变量,然后使用@Value获取yml配置文件的值。

    最后关键就是使用 @PostConstruct 熟悉将yml中配置的值赋给本地的变量,这样后面的静态方法就能使用了。

    注意util类使用了 @Component 属性注解了说明是需要在启动类 Application 启动的时候加载的,

    所以本地写一个方法调用 util 的时候是获取不到值的。

一、通过@Value方式读取配置文件内容

  1. 工具类增加静态变量初始化方法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();
    }
}
  1. 具体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;
    }
}
  1. 增加代理类,代理类构造方法中调用工具类静态属性的初始化方法
@Component
public class DingDingPropProxy {

    public DingDingPropProxy(DingDingProperties dingProperties){
        DingDingPropUtil.initDingDingProp(dingProperties);
    }

}
  1. 使用
public static void main(String[] args) {

        System.out.println(DingDingPropUtil.appKey);
        System.out.println(DingDingPropUtil.agentId);
        
}

你可能感兴趣的:(Java,springboot,spring,boot,java,spring)