手机版
你好,游客 登录 注册
背景:
阅读新闻

spring声明式事务管理简述

[日期:2016-11-16] 来源:Linux社区  作者:gt18552 [字体: ]

Spring 的声明式事务管理在底层是建立在 AOP 的基础之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。

声明式事务管理分为两种:1.配置文件  2.注解

1.配置文件(声明式事务管理)用法:

在applicationContext.xml配置文件中配置①事务管理器(事务管理者)、②事务参数(事务通知)、③AOP配置

如下:

applicationContext.xml配置文件代码

<!-- 事务管理器(事务管理者) -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
        <property name="sessionFactory" ref="mySessionFactory"></property>
    </bean>
    <!-- 事务参数(事务通知) -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
         <!-- 指定名字为add的方法进行声明式事务管理 (指定方法)-->
            <tx:method name="add*" propagation="REQUIRED" />
            <tx:method name="del*" propagation="REQUIRED" />
            <tx:method name="mod*" propagation="REQUIRED" />
            <tx:method name="*" propagation="REQUIRED" read-only="true" />
        </tx:attributes>
    </tx:advice>
   <!-- AOP的配置,(指定包) -->
    <aop:config>
        <aop:pointcut id="interceptorPointCuts"
            expression="execution(* 
        news.dao.*.*(..))" />
        <aop:advisor advice-ref="txAdvice" pointcut-ref="interceptorPointCuts" />
    </aop:config>

 注意:可以在<tx:advice>中的<tx:method>的name属性指定要进行声明式事务管理的方法

2.注解(声明式事务管理)用法:

比如我们要在service类中使用事务,那么就得先在service类上面添加@Transactional,声明这个service类中所有方法需要事务管理。然后在applicationContext.xml配置文件中配置事务管理者即可(如下):

service类代码

@Transactional(声明本类所有方法需要进行事务管理)
public class NewsServiceImpl implements NewsService {

  ...

}

applicationContext.xml文件代码

 1    <!-- 事务管理器(事务管理者) -->
 2    <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
 3        <property name="sessionFactory" ref="mySessionFactory"></property>
 4    </bean>

总结:以上就是两种方式使用声明式事务管理(1.配置文件 2.注解)。两种方式都可以实现事务管理,使用注解一步到位,为什么我们还要学一个这么复杂的xml文件配置来实现事务管理呢。博主在当时学习的时候同样有这样的疑问。在这里我简单解析一下这两者如何取舍。一,xml文件配置可以实现使我们的代码简化,并一定程度上与代码解耦,一旦我们的工程需要替换框架,只需改动配置,而无需改动源码。二,使用注解可以非常直观的理解我们的源码,提高了可读性,不过只建议在一个相对较小,框架固定的工程中使用。具体该使用哪种方式还得依据具体情况分析。

Spring中如何配置Hibernate事务 http://www.linuxidc.com/Linux/2013-12/93681.htm

Struts2整合Spring方法及原理 http://www.linuxidc.com/Linux/2013-12/93692.htm

基于 Spring 设计并实现 RESTful Web Services http://www.linuxidc.com/Linux/2013-10/91974.htm

Spring-3.2.4 + Quartz-2.2.0集成实例 http://www.linuxidc.com/Linux/2013-10/91524.htm

使用 Spring 进行单元测试 http://www.linuxidc.com/Linux/2013-09/89913.htm

运用Spring注解实现Netty服务器端UDP应用程序 http://www.linuxidc.com/Linux/2013-09/89780.htm

Spring 3.x 企业应用开发实战 PDF完整高清扫描版+源代码 http://www.linuxidc.com/Linux/2013-10/91357.htm

Spring 的详细介绍请点这里
Spring 的下载地址请点这里

本文永久更新链接地址http://www.linuxidc.com/Linux/2016-11/137194.htm

linux
相关资讯       Spring事务  Spring声明式事务 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款