@Value不能给静态变量直接赋值问题

本文介绍了在SpringBoot中如何正确地将配置文件的值注入到静态变量中。当使用@Value注解时,直接作用于非静态字段可以正常工作,但应用于静态字段则会失败。文章提供了有效的解决方法,即将@Value注解置于静态变量对应的非静态setter方法上,并确保该类由Spring管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 平时用的时候,直接在变量头上加上@Value就能到值(其中path.url是配置文件properties的。)。

@Value("${path.url}")
private String url;

2. 但是当url被static修饰之后,就赋不了值。

@Value("${path.url}")
private static String url;

这里是因为Spring Boot 不允许/不支持把值注入到静态变量中,但是也给出了解决的方案。

3.把@Value("${path.url}")放在静态变量的set方法上面即可,需要注意的是set方法要去掉static,有些朋友习惯性的快捷键生成set方法而没有去掉static,导致还是赋值失败。还有就是当前类要交给spring来管理。

private static String url;

// 记得去掉static
@Value("${mysql.url}")
public void setDriver(String url) {
     JdbcUtils.url= url;
}

 

美好生活来源于点点滴滴的记录。

 

转载于:https://www.cnblogs.com/hsz-csy/p/9625950.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值