2009-12-08 3 views
0

У меня есть проект с весной и 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> 

и этого configutarion весны

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

И эта работа для обычных источников данных, но что, если мне нужно блокировка.

ответ

0

Простая, но очень мощная опция заключается в упаковке различных файлов с вашим приложением, то есть различных конфигурационных файлов Spring.

1

IMO, вы должны пойти на два конфигурационных файла Spring, например data-access.xml и data-access-test.xml, и использовать их позже в тестовом контексте. Вы можете, конечно, смешивать этот подход с профилями и фильтрацией, выбирать один или другой в зависимости от профилей и т. Д. На самом деле есть бесконечные возможности.

1

У меня была ситуация несколько месяцев назад, когда у меня было подключаемое JNDI-соединение с Spring, для запуска на сервере приложений и подключаемое соединение c3p0 с включенным Spring для настольного отладчика того же приложения.

Для этого у меня были две отдельные пружинные конфигурации для db. Один для JNDI и один для локальной объединенной версии. Я использовал отдельную «родительскую» конфигурацию, которая включала соответствующую конфигурацию, основанную на отфильтрованном свойстве в родительской конфигурации.

Короче говоря, используйте профиль, чтобы установить файл конфигурации, который вы будете включать в свой родительский файл-источник.

Смежные вопросы