0

私はjspとJavaコードを持つWebアプリケーションを開発しました。現在、すべてのキー値を環境/ライフサイクル固有のプロパティ ファイル (conf-dev.properties、conf-stg.properties、conf-prod.properties など) に配置しました。

これらのプロパティファイルを外部化して、戦争の外に配置できるようにしたい(戦争に影響を与えずに)。現在、war ファイルはプロパティ ファイルと密接に結合されています。何かを変更する必要がある場合は、ビルドして戦争を行い、展開する必要があります。

展開サーバーマシンへのアクセスは非常に制限されており(構成ファイルを配置できる1つのフォルダーにのみアクセスできます)、展開プロセスはCI(ジェンキンと自動化されたスクリプト)によって処理されます。

私はインターネットで調査し、春を使用してこれを達成できることを知りました.これを達成するための最良の方法は何ですか?

4

4 に答える 4

0

環境固有のプロパティを外部化するより良い方法は、「user.home」または「user.dir」を使用することです。

于 2015-10-22T04:22:50.650 に答える
0

あなたの質問を理解したらClass.getResourceAsStream(String)、リンクされたJavadocを使用できます(一部)

このメソッドは、このオブジェクトのクラス ローダーに委譲します。このオブジェクトがブートストラップ クラス ローダーによってロードされた場合、メソッドは に委譲しClassLoader.getSystemResourceAsStream(java.lang.String)ます。

于 2015-10-22T02:22:39.613 に答える
0

ありがとう@Martin F ..

解決済み:これは私が使用した最後のものであり、dev、stage Env で正常に動作しています。

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="ignoreUnresolvablePlaceholders" value="false"/> <property name="order" value="1"/> <property name="locations"> <list> <value>classpath:conf-${cisco.life}.properties</value> <value>file:///${openshift.home}/data/conf-${cisco.life}.properties</value> <value>file:${openshift.home}/data/conf-${cisco.life}.properties</value> </list> </property> </bean>.

そして、openshift でスクリプト アクション フックを使用して、システム レベルでライフサイクルを設定しました。

appname=$OPENSHIFT_APP_NAME をエコーし case "$appname" in *dev)export JAVA_OPTS_EXT="${JAVA_OPTS_EXT} -Dcisco.life=dev"; echo "setting up env life dev for " $appname ;; *stage)export JAVA_OPTS_EXT="${JAVA_OPTS_EXT} -Dcisco.life=stg; echo "setting up env life as stg for " $appname​​ます。

于 2015-10-25T18:33:48.193 に答える