码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-01-29 22:05:15      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:配置   classpath   efi   nbsp   解决   不同的   prope   ons   iss   

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文件的两种方法与注意事项

标签:配置   classpath   efi   nbsp   解决   不同的   prope   ons   iss   

原文地址:https://www.cnblogs.com/c2g5201314/p/12241446.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!