私は、Springプログラマーが知っているように、XMLファイルに多くのプロパティ値を持つSpring WebFlowプロジェクトに取り組んでいます。データベースのユーザー名、パスワード、URLなどがあります。
Spring WebFlowおよびMavenでEclipseを使用しています。 SAはビルドを行いますが、SAは値を変更するためにXMLファイルにアクセスすることを望みませんが、 、私たちは生産値を知りません。
ほとんどの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>
お役に立てれば。