解决用@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;
    }


目录
打赏
0
0
0
0
223
分享
相关文章
MQTT常见问题之收不到MQTT消息如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
解决Git中fatal: refusing to merge unrelated histories
Git的报错 在使用Git的过程中有时会出现一些问题,那么在解决了每个问题的时候,都需要去总结记录下来,下次不再犯。 一、fatal: refusing to merge unrelated histories 今天在使用Git创建项目的时候,在两个分支合并的时候,出现了下面的这个错误。
109314 6
Caused by: org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://xxxx.svc.cluster.local:8080/xxxx": Connection reset; nested exception is java.net.SocketException: Connection reset 什么原因导致得
Caused by: org.springframework.web.client.ResourceAccessException: I/O error on POST request for "xxxx.svc.cluster.local:8080/xxxx ": Connection reset; nested exception is java.net.SocketException: Connection reset 什么原因导致得
4009 0
Redis 之 WRONGTYPE Operation against a key holding the wrong kind of value【bug解决】
Redis 之 WRONGTYPE Operation against a key holding the wrong kind of value【bug解决】
11171 0
log4j异常日志过滤规则配置
log4j异常日志过滤规则配置
363 0
|
10月前
|
Java实现:将带时区的时间字符串转换为LocalDateTime对象
通过上述方法,你可以将带时区的时间字符串准确地转换为 `LocalDateTime`对象,这对于处理不需要时区信息的日期和时间场景非常有用。
1242 4
IDEA设置项目编码格式【修改为GBK 或 UTF-8】
这篇文章介绍了在IntelliJ IDEA中如何设置项目编码格式,包括将项目编码修改为GBK或UTF-8的详细步骤和图解。
17422 12
IDEA设置项目编码格式【修改为GBK 或 UTF-8】
ClassPathResource踩坑
ClassPathResource踩坑
207 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问