1

Spring Bean プロファイルを使用して、各データソース環境を分離します。

<bean id="fooJDBCTemplate" class="com.rakuya.r_erp.task.dao.FooJDBCTemplate">
    <property name="dataSource" ref="dataSource" />
</bean>

<beans profile="dev">
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://somewhere:3306/erp?characterEncoding=UTF-8" />
        <property name="username" value="" />
        <property name="password" value="" />
    </bean>
</beans>

<beans profile="qa">
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://somewhere:3306/erp?characterEncoding=UTF-8"/>
        <property name="username" value=""/>
        <property name="password" value=""/>
    </bean>
</beans>

<beans profile="prod">
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://somewhere:3306/erp?characterEncoding=UTF-8"/>
        <property name="username" value=""/>
        <property name="password" value=""/>
    </bean>
</beans>

そして、次のコマンドを使用してjarファイルを作成し、プロファイルを指定します

mvn clean package -Dspring.profiles.active=prod

しかし、jarファイルを実行すると、dataSourceの定義がないというエラーが発生しました。Maven は Spring プロファイルを使用して jar を構築していないようです。

dataSource を使用するように Maven または Spring peofile を構成するにはどうすればよいですか?

どうも

4

2 に答える 2

1

クマはすべて同じタイプ (DriverManagerDataSource) であり、環境間で異なるのはいくつかのプロパティだけであるため、スプリング プロファイルを取り除き、プロパティを使用してこれらの値を設定するのが最善だと思います。PropertyPlaceholderConfigurer は、必要な環境を指定して vm パラメータを設定するこのシナリオを処理できるはずです。-Denv=dev のようなもの。

<bean id="propertyConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>classpath:${env}.properties</value>
        </list>
    </property>
</bean>

次に、次のようなデータソース Bean が 1 つだけ必要になります。

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

また、dev.properties、qa.properties、および prod.properties という名前の各環境のプロパティ ファイルと、それぞれに db.driver、db.url などの値が含まれています。

Spring が起動すると、-Denv で渡された値に基づいて適切なプロパティ ファイルが選択され、対応するプロパティ値がデータソース Bean にロードされます。

于 2013-06-14T05:46:45.160 に答える