解决用@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天前
局部变量和成员变量
局部变量和成员变量 1.定义的位置不一样【重点】 局部变量:在方法的内部 成员变量:在方法的外部,直接写在类当中 2.作用范围不一样【重点】 局部变量:只有方法当中才可以使用,出了方法就不能再用 成员变量:整个类全都可以通用。 3.默认值不一样【重点】
10 0
|
缓存 安全 前端开发
十分钟搞懂手机号码一键登录
十分钟搞懂手机号码一键登录
1433 0
|
6月前
|
设计模式 数据可视化 Java
JD-GUI和JAD对War包和Jar包进行反编译教学
JD-GUI和JAD是两个用于反编译Java字节码的工具。代码调试:当你需要调试Java代码时,可以使用JD-GUI将Java类反编译为可读的源代码,以便进行调试和分析。代码分析:如果你需要对Java类进行深入的分析,例如了解代码结构、方法调用关系等,可以使用JD-GUI来反编译Java类,并查看反编译后的源代码。代码重构:如果你需要修改现有的Java类,可以使用JD-GUI将Java类反编译为可读的源代码,然后进行修改。注意,反编译后的源代码可能不完全与原始源代码相同,因此在进行修改时需要谨慎。
603 1
|
6月前
|
Java
log4j异常日志过滤规则配置
log4j异常日志过滤规则配置
238 0
|
3月前
|
Java Android开发
IDEA设置项目编码格式【修改为GBK 或 UTF-8】
这篇文章介绍了在IntelliJ IDEA中如何设置项目编码格式,包括将项目编码修改为GBK或UTF-8的详细步骤和图解。
IDEA设置项目编码格式【修改为GBK 或 UTF-8】
|
3月前
|
SQL 数据可视化 关系型数据库
SQLite3使用笔记(1)——查询
SQLite3使用笔记(1)——查询
231 0
|
4月前
|
JavaScript
【vue】vue 里面使用 v-html 插入的文本带有换行符‘\n‘不换行
【vue】vue 里面使用 v-html 插入的文本带有换行符‘\n‘不换行
513 0
|
SQL druid Java
解决 ‘The last packet successfully received from the server was xxx milliseconds ago‘ 问题
解决 ‘The last packet successfully received from the server was xxx milliseconds ago‘ 问题
12768 0
|
Java 数据库连接 数据库
解析 Java 中的 @Mapper 注解:优雅实现对象映射的高效利器
在现代软件开发中,对象映射是一个常见的任务,而 Java 中的 `@Mapper` 注解则是实现对象映射的强大工具。通过该注解,我们可以轻松地定义对象之间的映射关系,提高代码的可读性和可维护性。本文将带您深入探索 Java 中的 `@Mapper` 注解,揭示其作用、用法以及在实际开发中的应用场景。