1.在spring配置文件中启用对@AspectJ切面配置的支持须加入: <aop:aspectj-autoproxy />
2.声明式事务中,任何RuntimeException将触发事务回滚,checked Exception将不触发事务回滚
(没有指定的情况下的默认值); 通过设置<tx:method />的 rollback-for和no-rollback-for属性可以自定义,
而且中间可以罗列多个
3.加载时织入切面加 <context:load-time-weaver />
相应的jar:aspectjweaver.jar,spring.jar,aspectjrt.jar
有关的xml文件:META-INF/aop.xml
4.XML Schema-based configuration
不同的需求需要引入不同的xml命名空间定义,附录A
5.事务策略:
(a).client orchestration事务策略
(b)API Layar事务策略:
优点:直观、简单、易于实现,并且健壮,能够应用于大多数场合
缺点:在调用栈的最高层启动事务会降低效率,长时间占用事务和长时间锁定会消耗过多的资源
(c)High Concurrency策略
在API Layer策略的基础上,实现了最高水平的数据完整性和一致性,很好的平衡它与吞吐量、数据库并发之间的矛盾。
(使用 InnoDB 引擎的 Oracle 和 MySQL)不会保留读取锁,锁越多,对并发和吞吐量影响越大)
实现:(1)宏观上,在客户端 、API层、DAO层混合引入事务;(2)在微观上,使用“先读取技巧”和“低级技巧”,尽可能的缩小“update"和"insert"所涉及的范围。
(d)High-Speed Processing事务策略
本质就是放大一部分风险,综合考虑可用的框架,结合存储过程、本地事务,最大限度的发挥性能优势。
事务策略应用的黄金法则:
a.启动事务的方法被指定为事务所有者
b.只有事务所有者可以回滚事务