0

私はJava Webプロジェクトで働いています。「jdbc.properties」および「log4j.properties」ファイルのフォルダーは、testing、demo、および release で値が異なるため、環境に応じて変更する必要があります。

次のフォルダーとサブフォルダーがあります。

c:\myProject\conf\dev c:\myProject\conf\test c:\myProject\conf\demo

これらの各フォルダーに異なる jdbc.properties および log4j.properties ファイルを配置する必要があります

c:\myProject\conf\dev\log4j.properties c:\myProject\conf\dev\jdbc.properties

c:\myProject\conf\test\log4j.properties c:\myProject\conf\test\jdbc.properties

c:\myProject\conf\demo\log4j.properties c:\myProject\conf\demo\jdbc.properties

3 つのプロジェクトは同じサーバーと同じ Apache にあります (これは Web プロジェクトです)。

最初に、Windows システム変数を使用して親フォルダー (c:\myProject) を取得するように変更を加えました。そのために、Spring appContext ファイルでこれを作成しました。

<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>file:${PARENT_FOLDER}/conf/dev/jdbc.properties</value> 
</property>
</bean>

「PARENT_FOLDER」は、Windows環境変数/システム変数で定義されています

これらの変更は正常に機能します。

しかし、ご覧のとおり、私は常に「/conf/dev」のファイルを探しています

パスの「dev」部分を動的にする必要があります。

3 つの環境が同じサーバーにデプロイされているため、Windows 環境変数/システム変数を使用できません。

web.xml で「プロパティ」(を使用) を使用しようとしていますが、Spring appContext ファイルでプロパティを見つける方法がわかりません。

プロパティを次のように定義します。

<env-entry>
    <env-entry-name>ENVIRONMENT</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>Dev</env-entry-value>
</env-entry>

しかし、Spring の "ENVIRONMENT" プロパティにアクセスする方法がわかりません

どうすればいいのかわからない。私は少し絶望的です

誰かが私を助けることができますか?

私の貧弱な英語に感謝し、申し訳ありません

4

1 に答える 1

0

JNDI の使用を検討しましたか?

JNDI を使用して、Tomcat 自体の内部で db 接続プロパティを定義します。このようにして、Spring 構成は環境に依存せず、すべての環境に同じ war をデプロイできます。これも参照してください。

ローカルで実行する必要がある場合は、いつでも「新しい」Spring 環境プロファイル機能を使用できます。

その他のオプション (JNDI がオプションではなく、maven を使用する場合) は、ビルド時に db.properties を生成する Maven 置換プラグインです。

于 2012-09-12T13:54:38.307 に答える