spring AOP 声明试 事务

39 篇文章 0 订阅
7 篇文章 0 订阅

spring AOP 的声明试 事务

先在spring配置文件写出 transaction的命名空间

xmlns:tx="http://www.springframework.org/schema/tx"

 http://www.springframework.org/schema/aop
 https://www.springframework.org/schema/aop/spring-aop.xsd
   <!--配置事务管理器-->
    <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

这是替换 通知类的注入bean的配置
class 写的是事务管理器对象的全类名

    <!--定义事务管理的通知类-->
    <tx:advice id="advice" transaction-manager="txManager">
<!--定义控制的事务-->
     <tx:attributes>
         <tx:method name="transfer" read-only="false"/>
     </tx:attributes>
    </tx:advice>

transaction-manager 中的 “txManager” 是 配置事务管理器配置的id名
tx:method name=“transfer” 指定事务是对通知类中那个方法起作用,
read-only=“false” 设置事务对这个方法控制的是 只读操作 还是 读写操作, 设置只读操作 写true; 设置 读写操作 写false
transaction-manager=“txManager” 是必需有的

 <!--配置AOP的切入点 与 通知-->
<aop:config >
    <!--切入点-->
   <aop:pointcut id="pt" expression="execution(* *..transter(..))"/>
    <!--配置aop-->
    <aop:advisor advice-ref="advice" pointcut-ref="pt"/>
</aop:config>

pointcut-ref="pt"是 aop:pointcut id=“pt” 的id名称
aop:advisor advice-ref=“advice” 是 tx:advice id=“advice” 的id名称

这就将aop的通知类全都写到配置文件里,就不用在java代码中写aop的通知类,之前对通知类的配置也被 配置事务管理器 和 定义事务管理的通知类 取代了

注意点:
<tx:method name=“transfer” read-only=“false”/>
将这段 写成
<tx:method name="" read-only=“false”/>
就表示对所有的事务进行 读写操作
这么写了后
expression="execution(
com.itheima.service.Service.(…))"
切入点 要写成 接口的包 和 接口名

aop:advice与aop:advisor区别

  • aop:advice配置的通知类可以是普通java对象,不实现接口,也不使用继承关系

  • aop:advisor配置的通知类必须实现通知接口

    • MethodBeforeAdvice

    • AfterReturningAdvice

    • ThrowsAdvice

    • ……

tx配置----tx:advice

  • 名称:tx:advice

  • 类型:标签

  • 归属:beans标签

  • 作用:专用于声明事务通知

  • 格式:

    <beans>
        <tx:advice id="txAdvice" transaction-manager="txManager">
        </tx:advice>
    </beans>
    
  • 基本属性:

    • id :用于配置aop时指定通知器的id

    • transaction-manager :指定事务管理器bean

tx:attributes

  • 名称:tx:attributes

  • 类型:标签

  • 归属:tx:advice标签

  • 作用:定义通知属性

  • 格式:

    <tx:advice id="txAdvice" transaction-manager="txManager">
        <tx:attributes>
        </tx:attributes>
    </tx:advice>
    
  • 基本属性:

tx配置----tx:method

  • 名称:tx:method

  • 类型:标签

  • 归属:tx:attribute标签

  • 作用:设置具体的事务属性

  • 格式:

    <tx:attributes>
        <tx:method name="*" read-only="false" />
        <tx:method name="get*" read-only="true" />
    </tx:attributes>
    
  • 说明:

    通常事务属性会配置多个,包含1个读写的全事务属性,1个只读的查询类事务属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

普希托夫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值