9.16 周报

事务
- @Transactional注解 实现事务控制; 默认只对runtimeException回滚,使用 rollbackfor = “Exception.class” 实现对特定异常进行回滚
- 事务传播行为@propagational ,【默认值】REQUIRED :需要事务,有则加入,无则创建新事务; REQUIRED_NEW: 事务之间不相互影响
AOP(面向切面编程)
使用步骤
- 在pom文件中导入依赖
- 编写程序,在程序中使用@Aspect注解
基本概念
- 连接点:被AOP控制的方法
- 通知:Advice,指重复的逻辑,也就是共性功能
- 切入点:PointCut,匹配连接点的条件,通知仅会在切入点方法执行时被应用
- 切面:Aspect,描述通知与切入点的对应关系(通知+切入点)
- 目标对象:Target,通知所应用的对象
通知的基本类型
- 环绕通知(默认): @Around ,此注解标注的通知方法在目标方法前、后都被执行
- 前置通知:@Before
- 后置通知:@After
- 异常通知:@AfterThrowing 抛出异常后执行通知
- 返回后通知:@AfterReturning 此注解标注的通知方法在目标方法后被执行,有异常不会执
行
切入点表达式
- execution(访问修饰符? 返回值 包名.类名.?方法名(方法参数) throws 异常?)
- @annotation 使用注解匹配多个无规则的方法
AOP案例
需求
将案例中增、删、改相关接口的操作日志记录到数据库表中
步骤
- 新建@Mylog注解,标注在所有增删改的Controller方法上
- 新建数据库log表格,新建OperateLog实体类,定义Mapper和Service层接口
- 定义切面类