大话Spring事务之AspectJ
Spring 提供了事务的两种管理方式, 一种是编程式的,还有一种是声明式的.个人喜欢声明式的,灵活,简单.
先谈谈什么是事务,事务由哪些特性.事务时一组原子的操作,要么全部执行成功,或者在执行过程中只要有某一步执行失败,则整个事务必须回退(回滚). 事务的特性有原子性,一致性,隔离性和持久性.
好了其他的不必说了,直奔主题. Spring管理事务的时候默认的是使用的java的动态代理机制,当然还可以使用cglib, 需要加入cglib类包.Spring还封装了AspectJ的事务管理,是面向aop的一种管理机制, 在这里我先了解一下相关的几个概念: pointcut, advice, sdvisor.
一: 通知(advice)
当程序处理到某一点的时候需要执行的代码块或者调用的方法叫做advice.
二: 切入点(的集合) pointcut
调用特定代码块的切入点, 就是上面提到的某一点.呵呵
三: advisor:
通知和切入点的装配器.
具体配置如下:
<bean id="transactionManager" class="org.springframework.aop.hibernate3.HibernateTransactionManager"> <property name="sessionFacotry" ref="sessionFactory"></property> </bean>
<tx:advice id="txAdvice" transaction-manager="transactionMananger"> <tx:attributes> <tx:method name="save*"/> <tx:method name="*" readonly="true"/> </tx:atttributes> </tx:advice>
声明一个事务管理器, 并且配置一个aop的通知, 这个通知适用于此事务管理器,只要是对于save打头的方法都会启用事务管理.但是基于哪些save打头的方法呢?
<aop:advisor advice-ref="txAdvice" pointcut="execution(public * *..*.service.*.*(..))"></aop:advisor>
利用aop的advosor将advice和pontcut装配起来. 将事务交给Spring管理.
相关推荐
qingjiuquan 2020-07-18
幸运小侯子 2020-06-21
hxw0 2020-06-16
heniancheng 2020-07-26
牧场SZShepherd 2020-07-19
airfling 2020-06-08
咻pur慢 2020-06-08
shuiluobu 2020-06-03
melonjj 2020-05-31
neweastsun 2020-05-27
shuiluobu 2020-05-12
whbing 2020-04-30
KFLING 2020-04-26
happinessaflower 2020-04-19
haidaoxianzi 2020-03-23