1.首先在/WEB-INF/applicationContext.xml添加以下内容:

  1. <!-- 配置事务管理器 -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory">
    <ref bean="mySessionFactory"/>
    </property>
    </bean>
  2. 配置各个模块所必须的部分,在各自的applicationContext-XXX-beans.xml配置的对于事务管理的详细信息。  

配置事务的传播特性,如下:

<!--  配置事务传播特性 -->
<tx:advice id="TestAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="find*" propagation="REQUIRED"/>
<tx:method name="get*" propagation="REQUIRED"/>
<tx:method name="apply*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<!-- 配置参与事务的类 -->
<aop:config>
<aop:pointcut id="allTestServiceMethod" expression="execution(* com.test.testAda.test.model.service.*.*(..))"/>
<aop:advisor pointcut-ref="allTestServiceMethod" advice-ref="TestAdvice" />
</aop:config>

需要注意的地方:

(1) advice(建议)的命名:由于每个模块都会有自己的Advice,所以在命名上需要作出规范,初步的构想就是模块名+Advice(只是一种命名规范)。

(2) tx:attribute标签所配置的是作为事务的方法的命名类型

如<tx:method name="save*" propagation="REQUIRED"/>

其中*为通配符,即代表以save为开头的所有方法,即表示符合此命名规则的方法作为一个事务。

propagation="REQUIRED"代表支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。

(3) aop:pointcut标签配置参与事务的类,由于是在Service中进行数据库业务操作,配的应该是包含那些作为事务的方法的Service类。

首先应该特别注意的是id的命名,同样由于每个模块都有自己事务切面,所以我觉得初步的命名规则因为 all+模块名+ServiceMethod。而且每个模块之间不同之处还在于以下一句:

       expression="execution(* com.test.testAda.test.model.service.*.*(..))"

其中第一个*代表返回值,第二*代表service下子包,第三个*代表方法名,“(..)”代表方法参数。

(4) aop:advisor标签就是把上面我们所配置的事务管理两部分属性整合起来作为整个事务管理。

最新文章

  1. oracle add_months函数
  2. markdown语法书
  3. μC/OS-Ⅲ中的临界段代码
  4. CSS 文本和表格中文字溢出显示省略号
  5. IOS行货自动打包
  6. C# Activex开发、打包、签名、发布 C# Activex开发、打包、签名、发布 [转]
  7. iOS-验证码倒计时60秒
  8. Android网络编程系列 一 Socket抽象层
  9. Myeclipse集成Jboss 6.1控制台不输出日志信息
  10. JDK和JRE的区别?
  11. 洛谷 P1316 丢瓶盖
  12. Hopcroft-Karp算法模版
  13. telematics product and company in China
  14. 关于JQ中,新生成的节点on绑定事件失效的解决
  15. flask-不错的教程
  16. 解决ArrayList线程不安全
  17. centos7.2下安装Mysql笔记
  18. ECC
  19. CSS层叠样式表--找到标签
  20. hessian 反序列化问题

热门文章

  1. Redis学习笔记之位图
  2. localhost无法访问的问题
  3. Kubernetes系列之Coredns and Dashboard介绍篇
  4. yarn组件通信协议简介
  5. Python——爬虫进阶
  6. Saiku多用户使用时数据同步刷新(十七)
  7. react-create-app 构建react项目的流程以及需要注意的地方
  8. 在vue中使用Autoprefixed
  9. Docker中运行nginx并挂载本地目录到镜像中
  10. 【EF6学习笔记】(九)异步处理和存储过程