xml文件加载properties文件的两种方法与注意事项

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

xml⽂件加载properties⽂件的两种⽅法与注意事项
1.遇到的问题:
配置redisSpringContext.xml 时,遇到 properties加载失败,提⽰BeanDefinitionStoreException 和 ng.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.调⽤⽅法:
不论那个写法,都是⼀样的调⽤⽅式${键名}
使⽤⽰例:。

相关文档
最新文档