解决用@value从配置文件中给静态变量赋值的问题

简介: 解决用@value从配置文件中给静态变量赋值的问题

问题描述

@value放在实例变量上会生效,放在静态变量上不会生效,原因是@Value是在bean实例化的时候进行属性赋值的,而静态变量是在类进行初始化的时候赋值的。

解决思路

可以在进行实例初始化的时候,将静态变量赋值。

解决方案

目前有三种方案:

方案一:

在该静态变量的set方法上加上 @Value注解。

@Component
public class MyTest {
    ...
  static String stringStatic;
    @Value("${testKey}")
    public void setStringStatic(String stringStatic) {
        MyTest.stringStatic = stringStatic;
    }

方案二:

通过@PostConstruct注解,该注解在bean初始化的时候调用。

@Component
public class MyTest {
    ...
  @Value("${testKey}")
    String string;
    static String stringStatic;
    @PostConstruct
    public void init() {
        stringStatic = string;
    }

方案三:

实现InitializingBean接口,其方法afterPropertiesSet()在bean进行初始化的时候调用

@Component
public class MyTest implements InitializingBean {
    ...
  String string;
    static String stringStatic;
    @Override
    public void afterPropertiesSet(){
        stringStatic = string;
    }


目录
相关文章
|
3月前
初始化局部变量和全局变量
【10月更文挑战第3天】初始化局部变量和全局变量。
48 5
|
8月前
|
存储 编译器 C语言
Makefile变量的引用与赋值
Makefile变量的引用与赋值
138 0
|
存储 C语言 Perl
西门子S7-1200的变量如何使用?什么是局部变量和全局变量?临时变量和静态变量有什么区别?
今天给大家讲一下什么是局部变量、全局变量、临时变量、静态变量,这些变量都有什么区别,以及在西门子S7-1200中这些变量如何来使用。
西门子S7-1200的变量如何使用?什么是局部变量和全局变量?临时变量和静态变量有什么区别?
|
C++
C++的引用 拷贝赋值和引用赋值
C++的引用 拷贝赋值和引用赋值
322 0
|
Java 测试技术
成员变量初始化的问题
成员变量初始化的问题
|
人工智能 Java
变量的值传递,地址引用(和对象成员变量、局部变量创建和初始化的内存机制)
变量的值传递,地址引用(和对象成员变量、局部变量创建和初始化的内存机制)
186 0
变量的值传递,地址引用(和对象成员变量、局部变量创建和初始化的内存机制)
|
C++
冒号初始化与构造函数内赋值
冒号初始化与构造函数内赋值
269 0
冒号初始化与构造函数内赋值
|
C语言 开发者
常量和变量_变量的初始化和赋值|学习笔记
快速学习常量和变量_变量的初始化和赋值
114 0
|
C++
05.构造函数属性初始化 static关键字 常量函数
(创建于2017/12/24) 如果一个类中属性有另一个类或者有const类型,如何初始化 #define _CRT_SECURE_NO_WARNINGS #include "iostream" //包含c++的头文件 using namespa...
947 0

热门文章

最新文章