前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >史上最简单的druid开启AOP事务教程

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

作者头像
林老师带你学编程
发布2019-05-25 23:43:18
2.1K0
发布2019-05-25 23:43:18
举报
文章被收录于专栏:强仔仔强仔仔

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1434152

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

代码语言:javascript
复制
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.这边我们新增一个方法,这个方法包含在切面中,方法代码如下所示:

代码语言:javascript
复制
@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请求,看看接口报错之后是否发生回滚操作。

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

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

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

总结

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年04月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档