一、首先配置hibernate数据源:
- <?xmlversion="1.0"encoding="UTF-8"?>
- <!DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN2.0//EN""http://www.springframework.org/dtd/spring-beans-2.0.dtd">
- <beans>
- <!--1、Oracle数据源配置-->
- <beanid="oraclesessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <propertyname="configLocation">
- <value>WEB-INF/classes/oracle-h.cfg.xml</value>
- </property>
- </bean>
- <beanid="oracletransactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager">
- <propertyname="sessionFactory">
- <reflocal="sessionFactory"/>
- </property>
- </bean>
- <!--2、SQLServer数据源配置-->
- <beanid="sqlServersessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <propertyname="configLocation">
- <value>WEB-INF/classes/sqlserver-h.cfg.xml</value>
- </property>
- </bean>
- <beanid="sqlServerTransactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager">
- <propertyname="sessionFactory">
- <reflocal="sqlServersessionFactory"/>
- </property>
- </bean>
- <!--3、其他数据源配置-->
- .................
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> <beans> <!--1、Oracle 数据源配置--> <bean id="oraclesessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation"> <value>WEB-INF/classes/oracle-h.cfg.xml</value> </property> </bean> <bean id="oracletransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref local="sessionFactory" /> </property> </bean> <!--2、SQLServer 数据源配置--> <bean id="sqlServersessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation"> <value>WEB-INF/classes/sqlserver-h.cfg.xml</value> </property> </bean> <bean id="sqlServerTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref local="sqlServersessionFactory" /> </property> </bean> <!--3、其他数据源配置--> .................
2、配置spring的事务拦截器(AOP):
- <!--1、oracle数据源事务管理拦截器-->
- <tx:adviceid="oracleTxAdvice"transaction-manager="oracletransactionManager">
- <tx:attributes>
- <tx:methodname="find*"read-only="true"/>
- <tx:methodname="get*"read-only="true"/><tx:methodname="notx*"propagation="NEVER"/>
- <tx:methodname="*"rollback-for="自定义Exception"/>
- </tx:attributes>
- </tx:advice>
- <!--2、sqlserver数据源事务管理拦截器-->
- <tx:adviceid="sqlserverTxAdvice"transaction-manager="sqlservertransactionManager">
- <tx:attributes>
- <tx:methodname="find*"read-only="true"/>
- <tx:methodname="get*"read-only="true"/><tx:methodname="notx*"propagation="NEVER"/>
- <tx:methodname="*"rollback-for="自定义Exception"/>
- </tx:attributes>
- </tx:advice>
- <!--3、其他数据源事务管理拦截器-->
- .................
- <!--配置多数据源的事务拦截器-->
- <beanid="serviceAutoProxyCreator"class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
- <propertyname="beanNames">
- <list>
- <value>*Service</value>
- </list>
- </property>
- <propertyname="interceptorNames">
- <list>
- <value>oracleTxAdvice</value>
- <value>sqlServerTxAdvice</value>
- <value>XXXXXTxAdvice</value>
- </list>
- </property>
- </bean>