Java中使用@Value获取不到值或无变化

本文介绍了在Java中,由于静态方法无法直接获取@Value注解的配置文件值,作者提供了两种解决方案:通过实例变量与静态变量配合使用,以及利用set方法动态赋值。这两种方法都利用了实例方法可以访问静态变量的特点。
摘要由CSDN通过智能技术生成

需要注意的是:

静态类的变量,方法是无法通过@Value获取配置文件里面的值的

但是我这里是因为方法是静态方法,这个无法改动,因为它是工具类

然而又不想写死,想通过配置项来动态判断

那么就解决: "如何在静态方法中获取实例变量?"

两个方法:

一.使用两个变量,一个实例变量,一个静态变量

因为实例方法是可以调用静态变量的 ,所以我们可以将实例变量赋值给静态变量

/** 当前系统是否为linux */
@Value("${ruoyi.isLinux}")
private boolean isLinux;

private static boolean isLinuxStatic;

@PostConstruct
public void init() {
    isLinuxStatic = isLinux;
}

@PostConstruct释义:

@PostConstruct是java5的时候引入的注解,指的是在项目启动的时候执行这个方法,也可以理解为在spring容器启动的时候执行

 

二.通过set方法赋值

/** 当前系统是否为linux */
private boolean isLinux;

@Value("${ruoyi.isLinux}")
public void setPropertyValue(boolean propertyValue) {
    类.isLinux = propertyValue;
}

其实可以看出,两个方法的本质都是通过"实例方法是可以调用静态变量" 这个角度来实现给静态变量赋值的.

有时候,遇到问题了,不要急,换个思路其实就可以解决了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值