史上最简单的druid开启AOP事务教程

上一篇文章我们介绍了springboot如何集成druid。今天在这个基础上面,增加AOP切面开启方法。

想学习分布式、微服务、JVM、多线程、架构、java、python的童鞋,千万不要扫码,否则后果自负~

1.首先在application.yml中增加AOP相关配置:

spring:
  datasource:
    druid:
      type: com.alibaba.druid.pool.DruidDataSource
      url: jdbc:mysql://127.0.0.1:3306/youMysql?useSSL=false
      username: root
      password: pwd
      driver-class-name: com.mysql.jdbc.Driver
      max-wait: 20000
      max-active: 20
      initial-size: 1
      min-idle: 1
      # Spring监控AOP切入点,如x.y.z.service.*,配置多个英文逗号分隔
      aop-patterns: com.minimal.service.*
      filters: stat,wall
      filter:
        stat.log-slow-sql: true
        stat.slow-sql-millis: 2000
      web-stat-filter:
        enabled: true
        url-pattern: /*
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*

aop-patterns中添加切面的包路径即可。下面我们来测试一下,我们的切面是否生效。

2.这边我们新增一个方法,这个方法包含在切面中,方法代码如下所示:

@Override
    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
    public void test(String flag) throws Exception {
        System.out.println("1111111111");
        User user = new User();
        user.setId("10000");
        user.setOpenid("10000");
        user.setNickname("10000");
        user.setHeadPortrait("10000");
        user.setAccount("10000");
        user.setCreateTime(new Date());
        user.setUpdateTime(new Date());
        user.setCoin(new BigDecimal(0));
        user.setIsDelete(1);
        user.setVersion(1);
        userMapper.insert(user);
       if("1".equals(flag)){
           throw new Exception();
       }
        user.setId("10001");
        userMapper.insert(user);
        System.out.println("2222222222");
    }

我们先来执行一下flag=”1“的http请求,看看接口报错之后是否发生回滚操作。 

image

我们可以看到后台已经发生异常了,现在我们打开数据库查询一下,是否有数据插入到数据库中。

image

我们发现没有数据插入,所以事务是生效的,接下来我们执行一下flag=”0“的http请求.。

image

我们可以很明显的看到,有两条数据插入到数据库中,所以方法执行成功了。

总结

druid已经给我们提供很简单的AOP功能了,只要配置相应的切面位置即可,但是我们配置完毕之后,切记要实际测试一遍,验证最终是否生效,否则会出大问题的。

要更多干货、技术猛料的孩子,快点拿起手机扫码关注我,我在这里等你哦~

                                                       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值