Spring 注入static属性值

Spring 注入static属性值

本文介绍Spring中如何从属性文件给static字段注入值。实际应用中一些工具类中static属性值需读取配置文件,实现该功能可以让工具类提供静态方法更易使用。

1. 问题

首先在属性文件中定义属性:

name = Inject a value to a static field

然后给实例变量注入值,通常在字段上使用@Value注解:

@Value("${name}")
private String name;

但在static字段上应用是,会发现其值为null,注入失败:

@Value("${name}")
private static String NAME_NULL;

这是因为Spring不支持在static字段上使用@Value注解。

2. 解决方案

Spring @Value注解可以在方法上使用,在加载所有Spring配置和bean后,Spring上下文将调用它。方法有多个参数,那么每个参数值都为方法注解对应的值,如果需要参数获取不同的值,可以在参数上增加注解:

@Value("Test")
public void printValues(String s, String v){} //both 's' and 'v' values will be 'Test' 

@Value("Test")
public void printValues(String s, @Value("Data") String v){}
// s=Test, v=Data

有了上面的知识,我们可以修改代码为:

public class PropertyUtils {
 
    @Value("${name1}")
    private String name;
 
    private static String NAME_STATIC;
 
    @Value("${name2}")
    public void setNameStatic(String name){
        PropertyController.NAME_STATIC = name;
    }
}

这回通过方法成功给static变量NAME_STATIC赋值。

3. 总结

文本介绍了Spring如何从属性文件给static属性注入值,在写一些与配置相关的工具类时常用。

原创文章 408 获赞 792 访问量 154万+

猜你喜欢

转载自blog.csdn.net/neweastsun/article/details/105425403
今日推荐