首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Spring事务配置的五种形式

2013-11-08 
Spring事务配置的五种方式? ? 根据代理机制的不同,总结了五种Spring事务的配置方式,配置文件如下:? ? 第一

Spring事务配置的五种方式


? ? 根据代理机制的不同,总结了五种Spring事务的配置方式,配置文件如下:
? ? 第一种方式:每个Bean都有一个代理

?

<?xml version="1.0" encoding="UTF-8"?>
<beans?xmlns="http://www.springframework.org/schema/beans"
? ? xmlns:xsi="http://www.w3.org/2001/?>
<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:aop="http://www.springframework.org/schema/aop"
? ? 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/s ... ing-context-2.5.xsd
? ?? ?? ???http://www.springframework.org/schema/aop?http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
<bean?id="sessionFactory"??
? ?? ?? ?? ?class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property?name="configLocation"?value="classpath:hibernate.cfg.xml"
/>
<property?name="configurationClass"?value="org.hibernate.cfg.AnnotationConfiguration"
/>
</bean>
<!--?定义事务管理器(声明式的事务)?-->
<bean?id="transactionManager"
? ?? ???class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property?name="sessionFactory"?ref="sessionFactory"
/>
</bean>
<bean?id="transactionBase"??
? ?? ?? ?? ?class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"??
? ?? ?? ?? ?lazy-init="true"?abstract="true">
<!--?配置事务管理器?-->
<property?name="transactionManager"?ref="transactionManager"
/>
<!--?配置事务属性?-->
<property?name="transactionAttributes">
<props>
<prop?key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<!--?配置DAO?-->
<bean?id="userDaoTarget"?class="com.bluesky.spring.dao.UserDaoImpl">
<property?name="sessionFactory"?ref="sessionFactory"
/>
</bean>
<bean?id="userDao"?parent="transactionBase"
>
<property?name="target"?ref="userDaoTarget"
/>
</bean>
</beans>


?

? ? 第三种方式:使用拦截器

?

<?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:aop="http://www.springframework.org/schema/aop"
? ? 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/s ... ing-context-2.5.xsd
? ?? ?? ???http://www.springframework.org/schema/aop?http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
<bean?id="sessionFactory"??
? ?? ?? ?? ?class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property?name="configLocation"?value="classpath:hibernate.cfg.xml"
/>
<property?name="configurationClass"?value="org.hibernate.cfg.AnnotationConfiguration"
/>
</bean>
<!--?定义事务管理器(声明式的事务)?-->
<bean?id="transactionManager"
? ?? ???class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property?name="sessionFactory"?ref="sessionFactory"
/>
</bean>
<bean?id="transactionInterceptor"??
? ?? ???class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property?name="transactionManager"?ref="transactionManager"
/>
<!--?配置事务属性?-->
<property?name="transactionAttributes">
<props>
<prop?key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<bean?class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property?name="beanNames">
<list>
<value>*Dao</value>

</list>
</property>
<property?name="interceptorNames">
<list>
<value>transactionInterceptor</value>
</list>
</property>
</bean>
<!--?配置DAO?-->
<bean?id="userDao"?class="com.bluesky.spring.dao.UserDaoImpl">
<property?name="sessionFactory"?ref="sessionFactory"
/>
</bean>
</beans>


?

? ? 第四种方式:使用tx标签配置的拦截器

?

<?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:aop="http://www.springframework.org/schema/aop"
? ? xmlns:tx="http://www.springframework.org/schema/tx"
? ? 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/s ... ing-context-2.5.xsd
? ?? ?? ???http://www.springframework.org/schema/aop?http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
? ?? ?? ???http://www.springframework.org/schema/tx?http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<context:annotation-config?/>
<context:component-scan?base-package="com.bluesky"
/>
<bean?id="sessionFactory"??
? ?? ?? ?? ?class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property?name="configLocation"?value="classpath:hibernate.cfg.xml"
/>
<property?name="configurationClass"?value="org.hibernate.cfg.AnnotationConfiguration"
/>
</bean>
<!--?定义事务管理器(声明式的事务)?-->
<bean?id="transactionManager"
? ?? ???class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property?name="sessionFactory"?ref="sessionFactory"
/>
</bean>
<tx:advice?id="txAdvice"?transaction-manager="transactionManager">
<tx:attributes>
<tx:method?name="*"?propagation="REQUIRED"
/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut?id="interceptorPointCuts"
? ?? ?? ?? ?expression="execution(* com.bluesky.spring.dao.*.*(..))"
/>
<aop:advisor?advice-ref="txAdvice"
? ?? ?? ?? ?pointcut-ref="interceptorPointCuts"
/>
</aop:config>
</beans>


?

? ? 第五种方式:全注解

?

<?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:aop="http://www.springframework.org/schema/aop"
? ? xmlns:tx="http://www.springframework.org/schema/tx"
? ? 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/s ... ing-context-2.5.xsd
? ?? ?? ???http://www.springframework.org/schema/aop?http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
? ?? ?? ???http://www.springframework.org/schema/tx?http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<context:annotation-config?/>
<context:component-scan?base-package="com.bluesky"
/>
<tx:annotation-driven?transaction-manager="transactionManager"/>
<bean?id="sessionFactory"??
? ?? ?? ?? ?class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property?name="configLocation"?value="classpath:hibernate.cfg.xml"
/>
<property?name="configurationClass"?value="org.hibernate.cfg.AnnotationConfiguration"
/>
</bean>
<!--?定义事务管理器(声明式的事务)?-->
<bean?id="transactionManager"
? ?? ???class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property?name="sessionFactory"?ref="sessionFactory"
/>
</bean>
</beans>


?

? ? 此时在DAO上需加上@Transactional注解,如下:

?

package?com.bluesky.spring.dao;

import?
}


热点排行