Skip to main content
 首页 » 编程设计

Spring 注入static属性值

2022年07月19日124arxive

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属性注入值,在写一些与配置相关的工具类时常用。


本文参考链接:https://blog.csdn.net/neweastsun/article/details/105425403