2009-12-08 23 views
0

我有一个有spring和maven的项目。我发现使用配置文件,maven可以改变数据源的属性。但是如果在生产过程中数据源是这样的查找,怎么做这个配置文件:一个用基本的数据源,另一个用jee查找。Maven配置文件基本数据源,jee:jndi-lookup

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

的这个configutarion这项工作对于正常的数据源,但如果我需要什么锁定。

回答

0

一个简单但非常强大的选项是将不同的文件打包到您的应用程序中,即不同的Spring配置文件。

1

IMO,你应该选择两个Spring配置文件,例如data-access.xml和data-access-test.xml,然后在测试环境中使用。当然,您可以将此方法与配置文件和过滤功能混合使用,根据配置文件等选择其中一种或另一种。实际上存在无限可能性。

1

我有一个情况,几个月前,我已经在应用程序服务器上运行了Spring的JNDI连接,并且为同一应用程序的桌面调试器启用了Spring启用的c3p0池连接。

为了做到这一点,我有两个单独的弹簧配置数据库。一个用于JNDI,另一个用于本地合并版本。我使用了一个单独的“父”配置,其中包含基于父配置中的过滤属性的适当配置。

长话短说,使用配置文件来设置您将包括到您的父级弹簧文件中的配置文件。