aop 跟transaction

对于aop方式我感觉就是一种代理的形式,不改变源代码还能实现新的功能。

aop的实现一个是使用xml方式配置,一个是使用注解的方式。

注解的方式是在xml中先将bean交给spring管理,然后打开注解功能<context:annotation-config/>

然后在切面中加上一个空的方法代替目标对象注解上@pointcut。

然后在代理方法上写@aspec("空方法名()”),@before(point-cut=“”,returning=“”)

 

 

也可以直接在xml中写如下代码

<aop:config>
  <aop:aspect id="aspect" ref="proxy"><!--代理对象-->
   <aop:pointcut expression="* a.b..*.*(..)" id="point"/><!--目标对象的切入点-->
   <aop:before method="" pointcut-ref="point"/>
  </aop:aspect>
 </aop:config>

 

对于事务管理也是有一些概念的比方说隔离级别,事无属性等

isolation:脏读,幻读,不可重复读、

propagation:required (需要一个事务,没有就打开新的)requirednew(需要一个事务,始终打开新的)  support(支持事务)  not-support(不支持事务)

  never(不要事务,有报错) mandatory(不要事务,没有报错) nested(嵌套调用的时候可以使用别人的事务,没有嵌套的时候跟required一样)

 

 

 

我们可以在代码中加入@transactional实现同一段代码用同一个事务

transactional中也有一些属性(read-only等)

 

 

我们也可以在xml中配置事务。

首先引物aop 跟tx命名空间

配置事务之前我们先要使用数据源开启一个事务bean

然后通过aop 的方式把事务注入进来,注入的代码如下:

<aop:config>
   <aop:pointcut expression="* a.b..*.*(..)" id="point"/>
   <aop:advisor advice-ref="" pointcut="point"/>
 </aop:config>
 
 <tx:advice  id="txAdvice"  transaction-manager="transactionManager">
  <tx:attributes>
   <tx:method name="get*" isolation="DEFAULT" propagation="REQUIRED"/>
  </tx:attributes>
 </tx:advice>

上述配置的意思是,我们有一个切面,当用户访问到满足* a.b..*.*(..)这个的放大的时候就要到<aop:advisor advice-ref="" pointcut="point"/>中ref方法中去寻找
事务属性,下面的method说明用户如果访问get开头的方法的时候就走这种事务,required default。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值