2017-09-15 14 views
0

は、私の最終目標は、以下の疑似コードで記述されている:Accessアプリケーションのプロパティ

my.configはブールである
if ${my.config} 
    <bean id="myBean" class="path.to.MyBeanImplOne" /> 
else 
    <bean id="myBean" class="path.to.MyBeanImplTwo" /> 
end 

プロパティ。 はthis SPELガイドによると、#{${my.config} ? 'path.to.MyBeanImplOne' : 'path.to.MyBeanImplTwo'}は有効な式であるので、私は次のように構成しようとした:

<bean id="myBean" class="#{${my.config} ? 'path.to.MyBeanImplOne' : 'path.to.MyBeanImplTwo'}" /> 

をしかし、次の例外だ:私はプロパティにアクセスするためのドキュメントを見つけることができません

Expression parsing failed; nested exception is org.springframework.expression.spel.SpelParseException: EL1041E: After parsing a valid expression, there is still more data in the expression: 'lcurly({)' 

をXML構成のためのSpEL式。これはJavaの設定でのみサポートされていますか?

私はこの問題の解決策をいくつか見てきました(そのうちのいくつかはこのquestionにあります)。私はsystemPropertiesを使用したくないのですが、この種の構成では実行引数を指定しないでください。profilesの使用がこの特定の使用例では過度であると感じています。

誰かが私がうまくやったことができましたか?あるいは、私が使用しようとした構文が実際にxml構成でサポートされていないかどうかを誰かが確認することができます。

答えて

0

私はあまりにもことを試みたが、それは変換できませんでしたので、私は例外だ

<bean id="foo" class="#{'${my.config}'.equals('true') ? 'java.lang.Integer' : 'java.lang.String'}"> 
    <constructor-arg value="1" /> 
</bean> 
+0

...これは私の作品

EDIT

をお試しくださいString to Boolean。プロパティを抽出しなかったが、代わりにStringとして扱ったことを意味します。 –

+0

'equals( 'true')'に引用符を加える - 私の編集を参照してください。 –

関連する問題