2017-07-31 13 views
1

私のプロジェクトでは、複数のコンテキストファイルがあります。その中で、以下のようなプロパティプレースホルダを使用してプロパティファイルをロードしています。プロジェクト全体に対して単一のプロパティプレースホルダを設定する方法

以下は私のcontext.xmlファイルです。

a.xml 
     <bean 
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
      <property name="location" value="file:${conf.path}/devconfiguration.xml" /> 
     <!--<property name="location" value="file:${conf.path}/sitconfiguration.xml" /> 
      <property name="location" value="file:${conf.path}/uatconfiguration.xml" /> 
      <property name="location" value="file:${conf.path}/prodconfiguration.xml" />--> 
     </bean> 

b.xml 
     <bean 
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
      <property name="location" value="file:${conf.path}/devconfiguration.xml" /> 
     <!--<property name="location" value="file:${conf.path}/sitconfiguration.xml" /> 
      <property name="location" value="file:${conf.path}/uatconfiguration.xml" /> 
      <property name="location" value="file:${conf.path}/prodconfiguration.xml" />--> 
     </bean> 

c.xml 
     <bean 
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
      <property name="location" value="file:${conf.path}/devconfiguration.xml" /> 
     <!--<property name="location" value="file:${conf.path}/sitconfiguration.xml" /> 
      <property name="location" value="file:${conf.path}/uatconfiguration.xml" /> 
      <property name="location" value="file:${conf.path}/prodconfiguration.xml" />--> 
     </bean> 

すべてのコンテキストファイルを変更するたびにwarファイルを取得していますが、彼らはプロジェクト全体に1つの不動産所持者を持つことができます。 私は試みましたが、プロパティー・プレースホルダーBeanを使用せずにプロパティー・ファイルをロードできませんでした。どんな助けでも大歓迎です。

+0

おそらくビルドツール - [maven](https://maven.apache.org/guides/mini/guide-building-for-different-environments.html)に依存します。 –

答えて

0

あなたは今b.xmlc.xmlのすべての定義がa.xml

で利用できるようになりますa.xml

<beans> // a.xml 
... 
    <import resource="classpath:b.xml"/> 
    <import resource="classpath:c.xml"/> 

b.xmlc.xmlの定義をインポートすることができますし、あなただけの彼らは、XMLの

のいずれかで結合を定義することができます
<context:property-placeholder 
location="classpath:a.properties, 
      classpath:b.properties, 
      classpath:c.properties" 
ignore-unresolvable="true"/> 

または0を使用していない場合名前空間

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
     <property name="locations"> 
      <list> 
       <value>classpath:a.properties</value> 
       <value>classpath:b.properties</value> 
       <value>classpath:c.properties</value> 
      </list> 
     </property> 
     <property name="ignoreUnresolvablePlaceholders" value="true"/> 
    </bean> 
0

シナリオを正しく理解していれば、環境ごとに3つの設定がありますか?たぶん地域別に、異なるXMLファイルを切り替えることができます。

代わりに行うべきことは、プロパティファイルのプロパティに解決されるxmlファイルが1つだけあることです。

リソースフォルダには、環境ごとに1つのプロパティファイルがあります。

起動時に、jvm引数を渡して "region"を設定するか、環境を指定して、プロパティファイル内の値にプレースホルダがあるxmlを "埋める"ことができます。

このsiteは、開始に役立ちます。

関連する問題