知识大全 Spring事务配置的五种方式
Posted 知
篇首语:努力到无能为力,拼搏到感动自己本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Spring事务配置的五种方式相关的知识,希望对你有一定的参考价值。
Spring事务配置的五种方式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
前段时间对Spring的事务配置做了比较深入的研究 在此之间对Spring的事务配置虽说也配置过 但是一直没有一个清楚的认识 通过这次的学习发觉Spring的事务配置只要把思路理清 还是比较好掌握的
总结如下
Spring配置文件中关于事务配置总是由三个组成部分 分别是DataSource TransactionManager和代理机制这三部分 无论哪种配置方式 一般变化的只是代理机制这部分
DataSource TransactionManager这两部分只是会根据数据访问方式有所变化 比如使用Hibernate进行数据访问时 DataSource实际为SessionFactory TransactionManager的实现为HibernateTransactionManager
具体如下图
根据代理机制的不同 总结了五种Spring事务的配置方式 配置文件如下
第一种方式 每个Bean都有一个代理
<?xml version= encoding= UTF ?><beans xmlns= xmlns:xsi= instance xmlns:context= xmlns:aop= xsi:schemaLocation= beans xsd context xsd aop xsd > <bean id= sessionFactory class= springframework orm hibernate LocalSessionFactoryBean > <property name= configLocation value= classpath:hibernate cfg xml /> <property name= configurationClass value= hibernate cfg AnnotationConfiguration /> </bean> <! 定义事务管理器(声明式的事务) > <bean id= transactionManager class= springframework orm hibernate HibernateTransactionManager > <property name= sessionFactory ref= sessionFactory /> </bean> <! 配置DAO > <bean id= userDaoTarget class= bluesky spring dao UserDaoImpl > <property name= sessionFactory ref= sessionFactory /> </bean> <bean id= userDao class= springframework transaction interceptor TransactionProxyFactoryBean > <! 配置事务管理器 > <property name= transactionManager ref= transactionManager /> <property name= target ref= userDaoTarget /> <property name= proxyInterfaces value= bluesky spring dao GeneratorDao /> <! 配置事务属性 > <property name= transactionAttributes > <props> <prop key= * >PROPAGATION_REQUIRED</prop> </props> </property> </bean> </beans>第二种方式 所有Bean共享一个代理基类
<?xml version= encoding= UTF ?><beans xmlns= xmlns:xsi= instance xmlns:context= xmlns:aop= xsi:schemaLocation= beans xsd context xsd aop xsd > <bean id= sessionFactory class= springframework orm hibernate LocalSessionFactoryBean > <property name= configLocation value= classpath:hibernate cfg xml /> <property name= configurationClass value= hibernate cfg AnnotationConfiguration /> </bean> <! 定义事务管理器(声明式的事务) > <bean id= transactionManager class= springframework orm hibernate HibernateTransactionManager > <property name= sessionFactory ref= sessionFactory /> </bean> <bean id= transactionBase class= 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= bluesky spring dao UserDaoImpl > <property name= sessionFactory ref= sessionFactory /> </bean> <bean id= userDao parent= transactionBase > <property name= target ref= userDaoTarget /> </bean></beans>第三种方式 使用拦截器
<?xml version= encoding= UTF ?><beans xmlns= xmlns:xsi= instance xmlns:context= xmlns:aop= xsi:schemaLocation= beans xsd context xsd aop xsd > <bean id= sessionFactory class= springframework orm hibernate LocalSessionFactoryBean > <property name= configLocation value= classpath:hibernate cfg xml /> <property name= configurationClass value= hibernate cfg AnnotationConfiguration /> </bean> <! 定义事务管理器(声明式的事务) > <bean id= transactionManager class= springframework orm hibernate HibernateTransactionManager > <property name= sessionFactory ref= sessionFactory /> </bean> <bean id= transactionInterceptor class= springframework transaction interceptor TransactionInterceptor > <property name= transactionManager ref= transactionManager /> <! 配置事务属性 > <property name= transactionAttributes > <props> <prop key= * >PROPAGATION_REQUIRED</prop> </props> </property> </bean> <bean class= 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= bluesky spring dao UserDaoImpl > <property name= sessionFactory ref= sessionFactory /> </bean></beans>第四种方式 使用tx标签配置的拦截器
<?xml version= encoding= UTF ?><beans xmlns= xmlns:xsi= instance xmlns:context= xmlns:aop= xmlns:tx= xsi:schemaLocation= beans xsd context xsd aop xsd tx xsd > <context:annotation config /> <context:ponent scan base package= bluesky /> <bean id= sessionFactory class= springframework orm hibernate LocalSessionFactoryBean > <property name= configLocation value= classpath:hibernate cfg xml /> <property name= configurationClass value= hibernate cfg AnnotationConfiguration /> </bean> <! 定义事务管理器(声明式的事务) > <bean id= transactionManager class= springframework orm hibernate 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(* bluesky spring dao * *( )) /> <aop:advisor advice ref= txAdvice pointcut ref= interceptorPointCuts /> </aop:config> </beans>第五种方式 全注解
<?xml version= encoding= UTF ?><beans xmlns= xmlns:xsi= instance xmlns:context= xmlns:aop= xmlns:tx= xsi:schemaLocation= beans xsd context xsd aop xsd tx xsd > <context:annotation config /> <context:ponent scan base package= bluesky /> <tx:annotation driven transaction manager= transactionManager /> <bean id= sessionFactory class= springframework orm hibernate LocalSessionFactoryBean > <property name= configLocation value= classpath:hibernate cfg xml /> <property name= configurationClass value= hibernate cfg AnnotationConfiguration /> </bean> <! 定义事务管理器(声明式的事务) > <bean id= transactionManager class= springframework orm hibernate HibernateTransactionManager > <property name= sessionFactory ref= sessionFactory /> </bean> </beans> package bluesky spring dao;import java util List;import hibernate SessionFactory;import springframework beans factory annotation Autowired;import springframework orm hibernate support HibernateDaoSupport;import springframework stereotype Component;import bluesky spring domain User;@Transactional@Component( userDao )public class UserDaoImpl extends HibernateDaoSupport implements UserDao public List<User> listUsers() return this getSession() createQuery( from User ) list(); cha138/Article/program/Java/ky/201311/28887相关参考
<!构建HibernateTransactionManager用于获得session管理事务> <beanid=transactionManagerclass=springfr
在Spring中配置Hibernate事务(图) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
在Spring中配置Hibernate的事务 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 本文
Spring中的四种声明式事务的配置 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Spring
Spring配置事务在DAO层和业务逻辑层 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!Sprin
以前项目中经常用spring事务处理还没有亲自配置过惭愧现在马上上路. 首先在spring容器中配置transactionManager这个有好多实现这里以HibernateTransactio
一、隧道式优点:运行维护和检修方便。缺点:需要大量资金、材料来建设坚固的地下隧道和足够的管道布置空间,建设投资费用较高。这种方式不适合居民生活小区内采用。 二、缆沟式(明沟式) 优点:电缆运行维护
一、隧道式优点:运行维护和检修方便。缺点:需要大量资金、材料来建设坚固的地下隧道和足够的管道布置空间,建设投资费用较高。这种方式不适合居民生活小区内采用。 二、缆沟式(明沟式) 优点:电缆运行维护
Spring配置数据源四种方式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 使用spring框
Spring中加载XML配置文件的方式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! sprin