上一篇文章我们介绍了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请求,看看接口报错之后是否发生回滚操作。
我们可以看到后台已经发生异常了,现在我们打开数据库查询一下,是否有数据插入到数据库中。
我们发现没有数据插入,所以事务是生效的,接下来我们执行一下flag=”0“的http请求.。
我们可以很明显的看到,有两条数据插入到数据库中,所以方法执行成功了。
总结
druid已经给我们提供很简单的AOP功能了,只要配置相应的切面位置即可,但是我们配置完毕之后,切记要实际测试一遍,验证最终是否生效,否则会出大问题的。
要更多干货、技术猛料的孩子,快点拿起手机扫码关注我,我在这里等你哦~