2

春を使用するスタンドアロンの瓶があります。私のSpring xmlの構成は、mavenでコンパイルするときに置き換えてきたプレースホルダーを使用しています。スプリング構成の例:

<bean id="foo" class="package.Foo">
    <property name="host" value="${db.host}" />
</bean>

Maven を使用して置き換える代わりに${db.host}、実行時にプロパティ ファイルを渡したいと思います。

java -jar Application.jar productionDB.properties

これにより、実稼働用の db プロパティ ファイルまたはテスト用の db プロパティ ファイルを渡すことで、実行時に db ホストを切り替えることができます。

これを行うことは可能ですか、それとも同じ目標を達成するためのより良い方法はありますか?

4

4 に答える 4

3

プロパティ ファイルをシステム プロパティとして指定できます。たとえば、次のようになります。

java -jar Application.jar -DappConfig=/path/to/productionDB.properties

次に、アプリケーション コンテキストでそれを参照できるようにする必要があります。

<context:property-placeholder location="file:${appConfig}"/>

<bean id="foo" class="package.Foo">
    <property name="host" value="${db.host}" />
</bean>
于 2013-04-08T13:38:39.127 に答える
1

aPropertyPlaceholderConfigurerを使用して、.propertiesファイルを使用して必要な変数を渡すことができます。

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

Bean 宣言はそのままにしておくことができます。プロパティはファイルから自動的に取得されproductionDB.propertiesます。

于 2013-04-08T13:21:09.970 に答える
0

いくつかのオプションがあります:

  1. コンテナの JNDI を介してリソースを設定し、Spring の<jee:jndi-lookup/>.
  2. スプリングの を使用し<context:property-placeholder location="classpath:/myProps.properties" />ます。PropertyPlaceholderConfigurerSpring は正しい実装 ( Spring < 3.1 またはPropertySourcesPlaceholderConfigurerSpring 3.1+ の場合)を自動的に使用するため、「完全な」Bean 定義よりもこの省略形を好みます。この構成を使用するmyProps.propertiesと、クラスパスのルートに をドロップするだけです (${TOMCAT_HOME}/libたとえば)。
于 2013-04-08T13:31:54.920 に答える
0

context:property-placeholder を使用して値を渡すことができます。したがって、セットアップは次のようになります。

<context:property-placeholder location="file://opt/db.properties"/>

次に、Foo サービスを配線するときに、次のように設定でプロパティ名を使用できます。

<bean id="foo" class="package.Foo">
   <property name="host" value="${db.host}" />
</bean>

次に、環境ごとに異なるファイルセットを使用するだけです

詳細については、のドキュメントを参照してください。

于 2013-04-08T13:44:28.923 に答える