22

Spring プログラマーなら誰でも知っているように、XML ファイルに多くのプロパティ値を持つ Spring WebFlow プロジェクトに取り組んでいます。データベースのユーザー名、パスワード、URL などがあります。

Spring WebFlow と Maven で Eclipse を使用しています。SA にビルドを実行させようとしていますが、SA は XML ファイルにアクセスして値を変更することを望んでいませんが、製品の値はわかりません。これをどのように処理しますか?

4

3 に答える 3

46

ほとんどの SA は.properties.xml.

Spring はPropertyPlaceholderConfigurerを提供して、すべてを 1 つまたは複数の.propertiesファイルに定義し、プレースホルダーを に置き換えることができるようにしapplicationContext.xmlます。

フォルダーのapp.properties下に作成します。src/main/resources/

... ...

# Dadabase connection settings:
jdbc.driverClassName=org.postgresql.Driver
jdbc.url=jdbc:postgresql://localhost:5432/app_db
jdbc.username=app_admin
jdbc.password=password

... ...

applicationContext.xmlそして、次のようにPropertyPlaceholderConfigurer を使用します。

... ...

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="location">
    <value>app.properties</value>
  </property>
</bean>

... ...

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName" value="${jdbc.driverClassName}" />
  <property name="url" value="${jdbc.url}" />
  <property name="username" value="${jdbc.username}" />
  <property name="password" value="${jdbc.password}" />
</bean>

詳細については、 Spring PropertyPlaceholderConfigurer の例をご覧ください。

さらに、アプリケーションの展開の観点から、通常はアプリを実行可能な形式でパッケージ化し、.properties ファイルは通常、実行可能な war または ear ファイル内にパックされます。簡単な解決策は、事前定義された順序で複数の場所からプロパティを解決するように PropertyPlaceholderConfigurer Bean を構成することです。そのため、デプロイメント環境では、固定の場所または環境変数を使用してプロパティ ファイルを指定できます。 SA の展開/構成タスクでは、通常、単一の外部 .properties ファイルを使用して、次のようにすべてのランタイム構成を定義します。

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations">
    <list>
      <!-- Default location inside war file -->
      <value>classpath:app.properties</value>
      <!-- Environment specific location, a fixed path on server -->
      <value>file:///opt/my-app/conf/app.properties</value>
    </list>
  </property>
  <property name="ignoreResourceNotFound" value="true"/>
</bean>

お役に立てれば。

于 2012-11-08T20:57:40.870 に答える