0

私は春とmavenを使ったプロジェクトを持っています。プロファイルを使用すると、maven がデータ ソースのプロパティを変更できることがわかりました。しかし、本番環境でデータソースがこのようなルックアップを使用している場合、このプロファイルをどのように実行するか: 1 つは基本的なデータソースを使用し、もう 1 つは jee ルックアップを使用します。

 <jee:jndi-lookup id="dataSourcejndi" jndi-name="jdbc/BGGDS"
      default-value="null" resource-ref="true"/>

これは、プロファイルが pom.xml にある方法です

<profiles>
         <profile>
            <id>local</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <hibernate.dialect>org.hibernate.dialect.HSQLDialect</hibernate.dialect>
                <jdbc.driver>org.hsqldb.jdbcDriver</jdbc.driver>
                <jdbc.url>jdbc:hsqldb:hsql://localhost/test</jdbc.url>
                <jdbc.username>sa</jdbc.username>
                <app.datasource>dataSource</app.datasource>
                <jdbc.password />
                <jdbc.isolation />
            </properties>
        </profile>

       <profile>
            <id>hudson</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <hibernate.dialect>org.hibernate.dialect.HSQLDialect</hibernate.dialect>
                <jdbc.driver>org.hsqldb.jdbcDriver</jdbc.driver>
                <jdbc.url>jdbc:hsqldb:hsql://localhost/othertest</jdbc.url>
                <app.datasource>dataSource</app.datasource>
                <jdbc.username>sa</jdbc.username>
                <jdbc.password />

            </properties>
        </profile>

</profiles>

そしてこれが春の構成

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jee="http://www.springframework.org/schema/jee"
        xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd
           http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd">



    <!--Datasource pruebas" -->
        <bean id="dataSource" 
        class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close"
        p:driverClassName="${jdbc.driver}"
        p:url="${jdbc.url}"
        p:username="${jdbc.username}"
        p:password="${jdbc.password}" />



    <!-- La definición del Factory de Session con Anotaciones -->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource" ref="${app.datasource}" />
        <property name="hibernateProperties">
            <props>
                <!--Pruebas
                <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>-->
                <!--Produccion-->
                <prop key="hibernate.dialect">${hibernate.dialect}</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
            </props>
        </property>

        <property name="mappingResources">

            <list>
                <value>Test.hbm.xml</value>
            </list>

    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>



   <!--  Injected properties
    -->
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
        <list>
            <value>classpath:jdbc.properties</value>
        </list>
        </property>

    </bean>

これは通常のデータソースでは機能しますが、ロックアップが必要な場合はどうでしょう。

4

3 に答える 3

1

IMO、2つのSpring構成ファイル(たとえば、data-access.xmlとdata-access-test.xml)を使用し、後者をテストコンテキストで使用する必要があります。もちろん、このアプローチをプロファイルやフィルタリングと組み合わせたり、プロファイルに応じてどちらか一方をピックアップしたりすることもできます。実際には無限の可能性があります。

于 2009-12-08T21:51:32.080 に答える
1

数か月前に、アプリ サーバーで実行するための Spring 対応の JNDI 接続と、同じアプリのデスクトップ デバッガー用の Spring 対応の c3p0 プール接続がある状況がありました。

これを達成するために、データベース用に 2 つの個別のスプリング構成を用意しました。1 つは JNDI 用、もう 1 つはローカル プール バージョン用です。親構成のフィルタリングされたプロパティに基づいて適切な構成を含む別の「親」構成を使用しました。

簡単に言うと、プロファイルを使用して、親の spring ファイルに含める構成ファイルを設定します。

于 2009-12-09T17:06:58.810 に答える
0

シンプルですが非常に強力なオプションは、アプリケーションにさまざまなファイル、つまりさまざまなSpring構成ファイルをパッケージ化することです。

于 2009-12-08T20:26:38.597 に答える