使用@Value 注解将配置文件中的值注入到静态变量中

当使用@Value注解获取配置文件中的值注入到非静态变量中时,只需要将@Value("${}")放到响应的变量上方即可。当非静态变量变为静态变量时,处理方式有所不同。

配置文件

ev:
  uri: https://123456.com
  appId: 123456

注入到非静态变量

 @Value("${e.uri}")
 private String uri;
 @Value("${e.appId}")
 private String appId;

注入到静态变量

@Component   //此注解不能少,否则需要收动实例化。类似@Component注解的都可以
public class EContractUtil {

    //声明静态变量
    private static  String uri;  

    private static String appId;

    //set方式注入值
    @Value("${e.uri}")    //此时注解一定放在此处,放到变量上方获取到的将是null
    public void setUri(String uri) {
        this.uri = uri;
    }

    @Value("${e.appId}")
    public void setAppId(String appId) {
        this.appId = appId;
    }

    public static void accessToken() {
        //在静态方法中只能使用静态变量,不能使用非静态变量,并且静态变量的值从配置文件中获取,就需要使用上述方法。
   }
}     

至于为什么不直接在静态方法中使用非静态变量,这样就不用name麻烦的从配置文件中获取属性值。原因如下:

静态只能访问静态;

非静态既可以访问非静态的,也可以访问静态的。

猜你喜欢

转载自www.cnblogs.com/H-Dream/p/12001286.html