使用AspectJ的AOP配置管理事务

  • 项目目录:
    在这里插入图片描述
  • application-config.xml(Spring核心配置文件):
<!--声明事务管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="myDataSource"/>
</bean>

<!--声明事务的通知
 id:为通知的名称
-->
<tx:advice id="buyAdvice" transaction-manager="transactionManager">
    <!--
    指定业务函数的属性(传播行为,隔离级别,超时,回滚等)
    -->
    <tx:attributes>
        <!--给指定业务函数设值事务属性
        name:业务函数的名称,可以使用通配符(*)
        rollback-for:是异常的全限定名
        -->
        <tx:method name="buyGoods" propagation="REQUIRED" isolation="DEFAULT"
                   rollback-for="java.lang.NullPointerException,
                   com.bjpowernode.excet.NotEnoughException"/>
    </tx:attributes>
</tx:advice>
<!--配置AOP-->
<aop:config>
    <!--声明切入点表达式:指定一些类和函数要加入切面的功能-->
    <aop:pointcut id="servicePt" expression="execution(* *..service..*.*(..))"/>
    <!--声明增强器对象(通知和切入点)
    advice-ref:事务通知对象的id
    pointcut-ref:切入点表达式
    -->
    <aop:advisor advice-ref="buyAdvice" pointcut-ref="servicePt"/>
</aop:config>
  • java测试代码:
public static void main(String[] args){
    String config="application-config.xml";
    ApplicationContext context=new ClassPathXmlApplicationContext(config);
    BuyGoodsService buyGoodsService=(BuyGoodsService)
            context.getBean("buyService");
    System.out.println("Main:"+buyGoodsService.getClass().getName());
    buyGoodsService.buyGoods(1001,200);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值