Property Placeholder

4195 ワード

propertiesファイルから構成をロードする必要がある場合があります.以前は次のようにしていました.
   
<bean id="jdbcProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
        <property name="locations">  
            <list>  
                <value>classpath*:/spring/jdbc.properties</value>  
            </list>  
        </property>  
    </bean>  

最近、コードがよりきれいであることがわかりました.
 
  <context:property-placeholder location="classpath:spring/jdbc.properties" />
 
bean定義では「${}」という方法で値を下げることができます.
   
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">  
        <property name="driverClassName" value="${jdbc.driverClassName}" />  
        <property name="url" value="${jdbc.url}" />  
        <property name="username" value="${jdbc.username}" />  
        <property name="password" value="${jdbc.password}" />  
        <property name="initialSize" value="${jdbc.initialSize}" />  
        <property name="maxActive" value="${jdbc.maxActive}" />  
        <property name="maxIdle" value="${jdbc.maxIdle}" />  
        <property name="minIdle" value="${jdbc.minIdle}" />  
    </bean> 

Properitesファイルのパスエラー、スペルエラーを除いて、「Could not resolve placeholder」が発生したのは、複数のPropertyPlaceholderConfigurerまたは複数のが使用されている可能性が高い.
例えばdaoがありますxmlはdbConnectを読み込む.properties、もう一つdfs.xml読み出しdfsManager.そしてweb.xml統一loadこの2つのxmlファイル
Xmlコードコレクションコード
     
            contextConfigLocation 
             
                    WEB-INF/config/spring/dao.xml,  
                    WEB-INF/config/spring/dfs.xml 
           
 
   
 
この2つのxmlファイルにそれぞれ
Xmlコードコレクションコード
     
     
     
     
     
では、必ず「Could not resolve placeholder」が出ます.
1つのSpringファイルでも複数のSpringファイルが統一されたloadでも、直接書くことを覚えておいてください.
Xmlコードコレクションコード
     
      
許されない.
ソリューション:
(1)Spring 3.0では、次のように書くことができます.
       /> 
       /> 
どちらもignore-unresolvable=「true」を付けなければならないので注意してください.一つにもう一つを加えなくてもだめです.
(2)Spring 2.5でにignore-unresolvable属性がない場合、PropertyPlaceholderConfigurerに変更できます.実はは次の構成と等価です
Javaコードコレクションコード

         
          
   
 
それだけに、複数のP r e r t y P e r e t y P r a c e holderConfigurerにignoreUnresolvablePlaceholdersを付けない属性を書くのも同様に「Could not resolve placeholder」が出ます.
両者は等価ですが、を書くのが好きだと思いますが、簡単ですね.Spring 3.0なら、ソリューション(1)を直接使うのは簡単です.Spring 2.5の場合は、PropertyPlaceholderConfigurerに書き換えるのに苦労する必要があります