在静态方法中访问@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);
    }

}

控制台:

相关推荐
吠品8 小时前
Python 写入 Excel 的两种主流方案实际用法总结
c语言·开发语言·算法
Wang's Blog8 小时前
Java 服务器: Linux-yum在线安装与lrzsz文件传输
java·服务器
邪修king8 小时前
Re:Linux 系统篇(三十一):库的制作与原理Chapter2:静态链接与程序加载 —— 从磁盘 ELF 到运行中进程的完整旅程
android·linux·运维·开发语言
geovindu8 小时前
rust: Factory Method Pattern
开发语言·设计模式·rust·工厂方法模式·创建型模式
eybk8 小时前
用Kivy制作手机相片分类局域网传送工具,还能传输数据库文件
开发语言·python
Java内核笔记8 小时前
Spring Boot 4 与 Spring AI 2.0 深度集成:ChatClient、Advisor 链与 MCP(源码级实战)
java·后端
可爱的小小小狼8 小时前
【无标题】
java·算法
用户3126874877208 小时前
Java SPI 到底怎么实现动态扩展的?从 ServiceLoader 到 Dubbo SPI 全链路拆解
java
新时代农民工~8 小时前
【双机高可用部署方案-前后端部署】
java·nginx·springboot
企业数字化笔记8 小时前
固定资产还有借用记录能报废吗?Java前置检查、停止折旧与SQL验收
java·开发语言·sql