Spring、Maven、Eclipse の XML ファイル内のプロパティ値を処理する最適な方法 質問する

Spring、Maven、Eclipse の XML ファイル内のプロパティ値を処理する最適な方法 質問する

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

私たちは、Eclipse を Spring WebFlow と Maven とともに使用しています。SA にビルドを実行させようとしていますが、SA は XML ファイルにアクセスして値を変更することを望んでいません。一方、私たちは実稼働時の値を知りません。どうすればよいでしょうか?

ベストアンサー1

.propertiesほとんどの SA は、 よりもファイルを扱うことに積極的かつ自信を持っています.xml

春は提供するプロパティプレースホルダーコンフィギュレーターすべてを 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

... ...

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

... ...

<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>

お役に立てれば。

おすすめ記事