在静态方法中访问@Value注入的静态变量!!

一、 静态变量

static修饰的成员变量,称为静态成员变量,静态成员变量最大的特性:不属于某个具体的对象,是所有对象所共享

简单来说:在某些类的对象中存在一些相同的成员变量,那么这种成员变量就可以设置成static修饰的成员变量,当然这只是一种相对简单的介绍。

二、静态方法

Java中,被static修饰的成员方法称为静态成员方法,是类的方法,不是某个对象所特有的。静态成员一般是通过静态方法来访问的

三、当我们通过@Value注解将配置文件中的参数注入到类中时,静态方法无法直接访问该变量

解决方案:

1.测试案例

java 复制代码
@Component
public class TestUtils {
    @Value("${server.port}")
    private static String port;

    @PostConstruct
    public static void test(){
        System.out.println("启动中");
        System.out.println("端口号{}"+port);
    }
}

控制台:

2.声明一个静态变量,编写一个方法,在方法上加上@PostConstruct,将@Value的值赋值给getNum变量

复制代码
 

@PostConstruct注解的作用:在程序初始化之前执行该方法

java 复制代码
@Component
public class TestUtils {
    @Value("${ums.num}")
    private  String num;

    private static String getNum;

    @PostConstruct
    public void init(){
        getNum=num;
    }

    @PostConstruct
    public static void test(){
        System.out.println("启动中");
        System.out.println("端口号{}"+getNum);
    }

}

控制台:

相关推荐
空中海2 分钟前
02 状态、Hooks、副作用与数据流
开发语言·javascript·ecmascript
Aurorar0rua4 分钟前
CS50 x 2024 Notes C - 09
c语言·开发语言·学习方法
014-code5 分钟前
布隆过滤器:判断“可能存在“和“一定不存在“
java·redis
兔小盈6 分钟前
多线程篇-(二)线程创建、中断与终止
java·开发语言·多线程
jnrjian11 分钟前
Library Cache Load Lock library cache pins are replaced by mutexes
java·后端·spring
hoiii18716 分钟前
基于MATLAB实现内点法解决凸优化问题
开发语言·matlab
abcnull20 分钟前
传统的JavaWeb项目Demo快速学习!
java·servlet·elementui·vue·javaweb
risc12345625 分钟前
【lucene】PostingsEnum跟TermsEnum 的区别是啥?
java·lucene
小江的记录本43 分钟前
【Kafka核心】Kafka高性能的四大核心支柱:零拷贝、批量发送、页缓存、压缩
java·数据库·分布式·后端·缓存·kafka·rabbitmq