Spring/Spring boot中静态变量赋值
2024-08-28 05:58:20
情形1:静态变量为自动注入的对象
解决方案:设置两个变量,非静态变量使用@resource注入Bean,然后使用@PostConstruct在Spring初始化Bean成功后为静态变量赋值
@Component
public class XXUtils { @Resource
private XXXProperties xxxPropertiesAutowired; private static XXXProperties xxxProperties; @PostConstruct
public void init() {
xxxProperties = this.xxxPropertiesAutowired;
}
}
情形2:静态变量为普通的基本数据类型,并且从配置文件中读取初始化值
解决方案:不要在静态变量上使用@Value注解(spring不允许/不支持把值注入到静态变量中)
在其对应的set方法是使用@Value注解(set方法不能是静态的)
/**
* 渠道号(XX提供,从配置中读取并初始化)
*/
public static String SFT_NOTIFY_CEB_CHANNEL; /**
* 机构号(XX’提供,从配置中读取并初始化)
*/
public static String INST_CODE; //===================get/Set Method======================
@Value("${mf.cebconfig.SFT_NOTIFY_CEB_CHANNEL}")
public void setSFT_NOTIFY_CEB_CHANNEL(String sftNotifyCebChannel) {
SFT_NOTIFY_CEB_CHANNEL = sftNotifyCebChannel;
logger.info("init SFT_NOTIFY_CEB_CHANNEL value suss,sftNotifyCebChannel={}",sftNotifyCebChannel);
} @Value("${mf.cebconfig.INST_CODE}")
public void setINST_CODE(String instCode) {
INST_CODE = instCode;
logger.info("init INST_CODE value suss,instCode={}",instCode);
}
参考:
https://www.jianshu.com/p/127310cb90e0
http://blog.csdn.net/zhayuyao/article/details/78553417
最新文章
- [原]excel启动时死锁
- C#.Net Mvc运营监控,计算方法/接口/action/页面执行时间
- 再说linux中的rm mv 遍历执行多个文件的操作: find + xagrs
- [Qcon] 百姓网开发总结
- python unicode字节串转成中文问题
- CCS学习资料汇总
- spring websocket Converters must not be empty
- xml格式化写入文件
- IE标签a嵌套table标签,链接点击无效
- F# 既能解释执行,也能编译执行
- Week11(11月18日)
- Code Forces 448C Painting Fence 贪婪的递归
- php常量作用
- 某直播App问题分析
- [Swift]LeetCode301. 删除无效的括号 | Remove Invalid Parentheses
- linux 下配置svn
- u-boot(六)小结
- 04 树莓派截图软件scrot的安装和使用
- vue2 在mounted函数无法获取prop中的变量的解决方法
- MySQL慢查询日志相关的配置和使用。