关于项目中如何去读取配置文件中的静态资源,遇到的一些坑,进行解决

原创
2018/05/30 16:21
阅读数 677

首先在讲这个问题前,还是分享一下,现在springboot项目,springcloud项目越来越主流,而这类项目在读配置文件中的资源是非常舒服的。所有的配置都是在一个xxxx.yml文件中存放,只要按照yml的约定写好静态资源,在代码中使用@Value注解就可以轻松获取了。springboot帮我们做了很多事情,导致了回归到一些老项目,在用@Value注解时,反而用的很不顺利了。

我先说说我在没有使用@Value注解时,是怎么去拿配置文件的,这种方式很套路,按照套路来肯定没问题,但是显得很low,不够高大上。分享一下:

首先,自己去定义好一个图中的方法,这里的ResourceBundle类是java自己封装好专门用于读取配置文件的一个类,只要把要读取配置文件的路径写好,就妥了

然后,利用@PostConstruct注解,在Bean注入完以后立即执行该方法,就可以拿到静态资源了。

上面这种方法是没问题的。但是我觉得这样太繁琐了,springboot的@Value注解在spring的项目中一样可以用,那是怎么操作的,也分享一下。

<context:component-scan base-package="com.hikvision.bean"/>

<context:property-placeholder location="classpath:/properties-config/hikvision.properties"/>
首先在xml文件中配置好扫描的包路径,以及要扫描的配置路径

 

@Value("${sensitiveurl}")

private String sensitiveUrl;

然后再对应的地方按如上去操作,启动项目,报错。当时很疑惑,为什么呢。查看报错信息 IllegalArgumentException: Could not resolve placeholder in string value

这个报错是什么意思呢,他说<context:property-placeholder>标签在配置文件中只能出现一次,不能重复使用,解决办法就是在标签中加入一个属性 ignore-unresolvable=”true” 问题就解决了

<context:property-placeholder location="classpath:/properties-config/hikvision.properties" ignore-unresolvable="true"/>

大家以后在配置文件中写这类标签,就都把后面那个属性加上吧,反正在肯定不会有问题,少了有可能就出问题了

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部