出现场景:工具类想使用配置文件中的配置,而静态方法只能使用静态属性

  • 直接增加了static会发现获取到的值为null

因为静态变量加载要早于Spring初始化
类加载顺序:静态字段或静态语句块 → 变量或者语句块被加载 → 构造方法被加载

@Value("${value}")
public static String value;
  • 可以使用@PostConstruct注解在Spring初始化之后再给静态遍历赋值

注解说明
Constructor(构造方法) -> @Autowired(依赖注入) -> @PostConstruct(注释的方法)

@Component // component注解,让当前类变成Spring的bean
public class SmsVerificationCodeUtil {
	@Value("${value}")
	private String value;
	private static String valueStatic;
	
	/**
	* 给静态变量赋值
	*/
	@PostConstruct
	private void init() {
	     valueStatic = value;
	}

	// 即可使用valueStatic
	public static String method(){
        return valueStatic;
    }
}
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐