Spring を使用した JSF Web アプリケーションがあり、applicationContext.xml から JVM 引数を参照する方法を見つけようとしています。環境引数 (-Denv=development など) を指定して JVM を開始しています。次のようないくつかの異なるアプローチを見つけて試しました。
<bean id="myBean" class="com.foo.bar.myClass">
<property name="environment">
<value>${environment}</value>
</property>
</bean>
ただし、MyClass でセッター メソッドが呼び出されると、「development」ではなく、文字列「${environment}」が渡されます。System.getProperty() を使用するための回避策がありますが、Spring を介してこれらの値を設定できる方が、より適切でクリーンになります。これを行う方法はありますか?
編集: 前に言及すべきだったのは、JDBC 接続を使用してデータベースからプロパティをロードしていることです。プロパティ プレースホルダーを構成に追加すると、データベースから読み込まれたプロパティがプロパティ プレースホルダーによってオーバーライドされるため、これにより複雑さが増すようです。それが順序に依存しているかどうかはわかりません。どちらか一方はできるが、両方はできないようなものです。
編集:現在、次の構成を使用してプロパティを読み込んでいます:
<bean id="myDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc.mydb.myschema"/>
</bean>
<bean id="props" class="com.foo.bar.JdbcPropertiesFactoryBean">
<property name="jdbcTemplate">
<bean class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg ref="myDataSource" />
</bean>
</property>
</bean>
<context:property-placeholder properties-ref="props" />