2016-10-04 11 views
1

これは私のプロパティファイルです:SpringはネストされたSpEL式をサポートしていますか?

base1.jdbc.password=pass1 base2.jdbc.password=pass2 base3.jdbc.password=pass3です。

は、私はどちらかBASE1にまたはBASE2またはbase3できるデータベース%%という環境変数を持っています。

環境変数に格納されているデータベースのパスワードプロパティを読み取るにはどうすればよいですか?私は次のようなものを考えました:

<property name="password" value="${#{systemProperties['DATABASE']}.jdbc.password}"/>

が正しいかどうかはわかりません。

+0

がよさそうです。エラー、問題、または問題は何ですか? – dit

+0

私はそれを試しましたが、私は得ています 'java.lang.IllegalArgumentException:プレースホルダ '#{systemProperties [' DATABASE ']}を解決できませんでしたjdbc.password' in string value" $ {#{systemProperties ['DATABASE'] } .jdbc.password} "' –

答えて

0

あなたはPropertyPlaceholderConfigurerの説明は

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/factory/config/PropertyPlaceholderConfigurer.html)ここで与えられている関連した質問( How do you configure a Spring bean container to load a Java property file?

から詳細情報を取得することができ、アプリケーションのコンテキストXMLで

<bean 
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location"> 
     <value>##YOUR PROPERTIES FILE NAME###</value> 
    </property> 
</bean> 

を、以下の設定を使用します

<value>タグにあるプロパティファイルの名前を使用してください。

以下は、サンプルプロジェクトでどのようにプロパティを使用したかの例です。私はprocessRetryPolicyという名前のbeanを持っていて、そのプロパティーはプロパティー・ファイルからロードされています。

<bean id='processRetryPolicy' class='com.poc.process.model.ProcessRetryPolicy' > 
    <property name="isActive" value="${process.executor.conn.retry.policy.isActive}"/> 
    <property name="intervalType" value="${process.executor.conn.retry.interval.type}"/> 
    <property name="intervalvalue" value="${process.executor.conn.retry.interval.value}"/> 
    <property name="retryPolicy" value="${process.executor.conn.retry.default.policy}"/> 
</bean> 

プロパティがプロパティで定義されているが、私は春のバッチ・アプリケーションのいずれかで、次を使用していた環境プロパティを追加するには

process.executor.conn.retry.policy.isActive = true 
process.executor.conn.retry.interval.type = HOUR 
process.executor.conn.retry.interval.value = 1 
process.executor.conn.retry.default.policy = Retry 

としてファイル: -

<property name="environment" value="#{jobParameters['env.type']}"/> 

環境型がランタイムパラメータとして次のように渡されました。

java -Xmx12288m -D<<List of Params and Values>> env.type=$env 

春の式言語を使用している春のコアでそれを行うための別の方法は、(http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/expressions.html

あなたの表現は正しく見えます。その後

+0

こんにちはアマル、お返事ありがとうございますが、慎重に私の質問をお読みください。 –

+0

@oualidqannouf私の悪い!私はあなたの質問を誤解しました。とにかく、私は式言語の詳細を追加しました。あなたの表現は正しいと思われます。情報は質問に完全に関連するものではないかもしれませんが、私は他人を助けるかもしれないので、答えを削除しません。 – Amal

0

<bean id="propertyPlaceholderConfigurer" 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
<property name="locations"> 
<list> 
<value>classpath:xxxxx.properties</value> 
</list> 
</property> 
</bean> 

プロパティのプレースホルダを追加

<bean id="bean" class="xxx.class"> 
<property name="password" value="#{systemProperties['DATABASE']}.jdbc.password"/>  
</bean> 
関連する問題