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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM