xml文件 加载properties文件的两种方法与注意事项
1.遇到的问题:
配置redisSpringContext.xml 时,遇到 properties加载失败,提示BeanDefinitionStoreException 和 java.lang.IllegalArgumentException: Could not resolve placeholder 'xxx' ,
找了很久都找不到原因,文件路径和键名都没写错,加载语法也没有写错。。。这就很难受了。
直到检查web.xml文件,,我猜测,是不是因为 springcontext-*.xml 这一类文件在 contextConfigLocation 里是共有的,不可以在不同的xml里加载不同的properties,而必须
在一个地方加载所有需要用到的properties文件,再由该类xml文件里共同使用。
巧的是,还真是这样!!!

2.解决方法:
项目里,我在service层xml 里设置了redis配置,需要用到redis的properties文件,在dao层xml文件里设置了mysql配置,需要用到jdbc的properties文件,
都分别加载properties,造成了冲突,于是,我直接在service层里统一配置了properties文件,只要在springcontext-*.xml 这一类文件里都可以共同调用,
因此,properties的键值对写法需要注意不要有键名相同!!!

3.xml 加载properties 文件的写法:
方法一:
1 <context:property-placeholder location="classpath:redis.properties"/>
优点:内容简洁。
缺点:只能在一类文件里加载一个 properties文件,加载多个会导致冲突,因此需要把所有配置信息写在一个properties里才行,会看起来很杂。
方法二:
<!-- spring的属性加载器,加载所有properties文件中的属性,供所有springcontext-*.xml文件共同使用 -->
<bean id="configPropertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<!--这样写可以引入多个properties文件-->
<!-- <value>/WEB-INF/configInfo.properties</value> -->
<value>classpath:redis.properties</value>
<value>classpath:jdbc.properties</value>
</list>
</property>
</bean>
优点:可以统一加载多个需要用到的properties文件,配置信息可以分开多个properties写会看起来很清晰。
缺点:内容太多,写法太冗余。
4.调用方法:
不论那个写法,都是一样的调用方式
${键名}
使用示例:


参考博客原址:https://www.iteye.com/blog/raising-2203899
xml文件 加载properties文件的两种方法与注意事项的更多相关文章
- [ARM-Linux开发]Linux下加载.ko驱动模块的两种方法:insmod与modprobe
假设要加载的驱动程序模块名为SHT21.ko 加载驱动模块 方法一: 进入SHT21.ko驱动模块文件所在的目录,然后直接 insmod SHT21.ko 即可 方法二: 将SHT21.ko文 ...
- Spring加载properties文件的两种方式
在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取properties里面的配置,这样后期只需要改动properties文件即可, ...
- Spring加载properties文件的属性的值
要使用配置文件的值首先在spring.xml配置加载properties文件 <context:property-placeholder location="classpath:ife ...
- JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(12):XML配置自动扫描包,自动加载*.properties文件
一.XML和注解组合使用 前几篇的测试案例都是在Java类中配置,现在换一种使用方式,在XML中配置,使Spring IoC容器在启动之后自动去扫描配置的包路径,扫描加载指定路径下的propertie ...
- Java开发学习(八)----IOC/DI配置管理第三方bean、加载properties文件
前面的博客都是基于我们自己写的类,现在如果有需求让我们去管理第三方jar包中的类,该如何管理? 一.案例:数据源对象管理 本次案例将使用数据源Druid和C3P0来配置学习下. 1.1 环境准备 学习 ...
- spring入门(二)【加载properties文件】
在开发过程当中需要用到配置信息,这些信息不能进行硬编码,这时配置文件是一个比较好的方式,java提供了properties格式的文件,以键值对的方式保存信息,在读取的时候通过键获得键对应的值,spri ...
- java加载properties文件的六中基本方式实现
java加载properties文件的方式主要分为两大类:一种是通过import java.util.Properties类中的load(InputStream in)方法加载: 另一种是通过impo ...
- java加载properties文件的六种方法总结
java加载properties文件的六种方法总结 java加载properties文件的六中基本方式实现 java加载properties文件的方式主要分为两大类:一种是通过import java. ...
- 加载properties文件的三种方法
源代码: package a.one; import java.io.FileInputStream; import java.io.InputStream; import java.util.Pro ...
随机推荐
- 将前端请求中的数据绑定到Spring MVC响应方法中参数的四种方法
一.映射URL绑定的占位符到方法参数 1.方法 使用@PathVariable注解 2.代码示例 a.接收请求方法 @RequestMapping(value = "/deleteInfo/ ...
- 程序员Meme 第00期
- Mybatis动态SQL语句使用
在实际开发中,有时候查询条件可能是不确定的,查询条件可能有多条也可能没有,这时候就需要用到动态的sql语句拼接功能. 一.if.where.sql标签的使用 需求:在一些高级查询中,查询条件存在的个数 ...
- CF336A Vasily the Bear and Triangle 题解
Content 一个矩形的顶点为 \((0,0)\),其对顶点为 \((x,y)\),现过 \((x,y)\) 作直线,分别交 \(x\) 轴和 \(y\) 轴于 \(A,B\) 两点,使得 \(\t ...
- java 多线程:线程死锁,如何判断程序是否有死锁代码块儿
线程死锁 死锁是指两个或两个以上的线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去(百度百科). 代码示例: /** * @ClassName ...
- ACwing895. 最长上升子序列
题目: 给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少. 输入格式: 第一行包含整数N. 第二行包含N个整数,表示完整序列. 输出格式: 输出一个整数,表示最大长度. 数据范围: ...
- Oracle不等于符号过滤null情况
在Oracle查询过程中,条件查询时,用"<>"操作符进行查询会过滤掉字段为null的记录. 一.不使用"<>"操作符查询:select ...
- Spring整合redis实现key过期事件监听
打开redis服务的配置文件 添加notify-keyspace-events Ex 如果是注释了,就取消注释 这个是在以下基础上进行添加的 Spring整合redis:https://www. ...
- JAVA使用itext根据模板生成PDF文档
1.制作PDF模板 网址打开:https://www.pdfescape.com/open/ 我们这里先在线上把基础的内容用word文档做好,然后转成PDF模板,直接上传到网站上,这样方便点 假设我们 ...
- DirectByteBuffer实现原理分析
1.创建DirectByteBuffer Direct ByteBuffer是通过JNI在Java虚拟机外的内存中分配了一块(所以即使在运行时通过-Xmx指定了Java虚拟机的最大堆内存,还是可能实例 ...