文档章节

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

 最胖的瘦子
发布于 2018/05/30 16:21
字数 555
阅读 107
收藏 0

首先在讲这个问题前,还是分享一下,现在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"/>

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

© 著作权归作者所有

粉丝 4
博文 34
码字总数 19073
作品 0
杭州
私信 提问
Spring Boot 2.0干货系列:(一)Spring Boot1.5X升级到2.0指南

前言 Spring Boot已经发布2.0有4个月多,多了很多新特性,一些坑也慢慢被填上,最近有空,就把本博客中Spring Boot干货系列对应的源码从1.5X升级到Spring Boot 2.0,顺便整理下升级的时候遇到...

嘟爷MD
2018/07/24
0
0
SpringBoot打成jar包部署,Excel模板下载文件遇到的问题

问题一. 读取resource 目录下文件时出现路径找不到 在本机测试都很顺利,当打包jar文件放到服务器上测试的时候发现了类似下面的异常信息: java.nio.file.NoSuchFileException: file:/app.j...

JackFace
07/02
0
0
『框架整合』SpringMVC+Spring+Hibernate+Maven整合常见问题

整理下自己在搭建SpringMVC+Spring+Hibernate+Maven框架时遇到的问题。 1. classpath路径解析 在搭建框架时,我们经常要用到这个单词,比如设置spring配置文件 classpath路径,指的就是class...

dejunz
2016/11/30
0
0
(一)SpringMVC之配置DispatcherServlet的一些坑

DispatcherServlet是SpringMVC的核心控制器,就像是SpringMVC的心脏,几乎所有的请求都会经过这个控制器,通过它,大大的降低了模块之间的耦合度。所有学SpringMVC的同学们第一步肯定都是先配...

Java攻城玩家
2018/06/03
0
0
Framework打包

iOS app需要在许多不同的CPU架构下运行: arm7: 在最老的支持iOS7的设备上使用 arm7s: 在iPhone5和5C上使用 arm64: 运行于iPhone5S的64位 ARM 处理器 上 i386: 32位模拟器上使用 x86_64: 64...

樗同学
2016/09/27
55
0

没有更多内容

加载失败,请刷新页面

加载更多

mongodb安装、连接,mongodb用户管理、创建集合、数据管理、备份恢复,副本集介绍、搭建、测试,分片介绍、搭建、测试,php的mongodb扩展、mongo扩展

21.26 mongodb介绍 21.27 mongodb安装 21.28 连接mongodb 21.29 mongodb用户管理 21.30 mongodb创建集合、数据管理 21.31 php的mongodb扩展 21.32 php的mongo扩展 21.33 mongodb副本集介绍 ...

tobej
21分钟前
1
0
C++的变量初始化

C++中变量的初始化有很多种方式,如:默认初始化,值初始化,直接初始化,拷贝初始化,列表初始化。 1、默认初始化:默认初始化是指定义变量时没有指定初值时进行的初始化操作。 如:int a;...

天王盖地虎626
43分钟前
1
0
MySQL-入门(一)

一、SQL的分类 DDL(Data Definition Language):数据定义语言,用来操作数据库对象:库、表、列等; DML(Data Manipulation Language):数据操作语言,用来增删改数据库中的数据; DCL(...

潜行-L
46分钟前
1
0
微服务架构在Kubernetes上的实现

我们讨论了最近的微服务趋势,以及伴随微服务架构可能出现的一些复杂问题。在接下来的几周内,我们将深入探讨这个问题。我们将探讨不同设计选择中固有的权衡,以及可以采取哪些措施来缓解这些...

别打我会飞
47分钟前
4
0
IDEA2018导入eclipse web项目

看别人的攻略:https://blog.csdn.net/qq_33229669/article/details/83751316 完成之后,出现了IDEA编译java报错:找不到符号_的解决方法错误, 然后百度出来是编码问题, 1.更改editor的文件编码...

流光韶逝
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部