springboot @vaule注解失效解决办法
2024-09-06 06:31:55
在Controller类里面通过@Value将参数注入进来,最后的确成功了。因此基于此经验,我便在其他使用的类里面也采用这样的方式注入参数,但是发现去失效了,报错为NULL,说明参数并没有我们料想的被注入进来。
原因 这是为什么呢?为什么在Controller类就成功了?在其他类里面我尝试过@Service,@Component,@Configure,但是我没有成功,经过查询,原来,在使用这些参数生成Bean类的时候,我们注入的参数还没有生效,因此获取不到,而不是由于参数注入的问题,而在某些场景,spring可能做了优化,是的参数优先注入,再生成Bean。那么有没有好的方法可以解决这个问题呢? 方案 首先,我们的参数的直接注入是肯定不行了,那么我们就采用初始化类的方式,将配置信息集中初始化。
import lombok.extern.slf4j.Slf4j;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties; /**
* 为bean类提前注入属性
*/
@Slf4j
public class PropertyUtil { private static Properties props; static {
loadProps();
} synchronized static private void loadProps() {
log.info("start to load properties.......");
props = new Properties();
InputStream in = null;
try { in = PropertyUtil.class.getClassLoader().
getResourceAsStream("application.properties");
props.load(in);
log.info("");
} catch (FileNotFoundException e) {
log.error("properties not found!");
} catch (IOException e) {
log.error("IOException");
} finally {
try {
if (null != in) {
in.close();
}
} catch (IOException e) {
log.error("properties close Exception!");
}
}
// logger.info(props);
log.info("load properties over...........");
} public static String getProperty(String key) {
if (null == props) {
loadProps();
}
return props.getProperty(key);
}
}
使用方法:
private static String reqIp = PropertyUtil.getProperty("reqIp");
最新文章
- 2013成都网络赛 J A Bit Fun(水题)
- curl命令行使用
- 51nod 循环数组最大子段和
- httpd.conf
- MySQL中删除重复数据的简单方法,mysql删除重复数据
- C语言标准库函数strcpy与strcmp的简单实现
- OO之策略模式
- Android Studio 使用笔记:Git 的配置和第一次提交到仓库
- IRP 与 派遣函数
- mac的svn之cornerstone简易教程
- H5 - 在线编辑制作
- 一步一步在Windows中使用MyCat负载均衡 上篇
- 第一章 oracle数据库基础
- RabbitMQ学习-1补充
- Jedis路由key的算法剥离
- Python使用plotly绘制数据图表的方法
- C# 创建精简版IIS
- go语言练习:接口
- 自己动手破解rar密码-ruby脚本实现
- 【C++】不要想当然使用resize