AOP 笔记

AOP【面向切面编程】

作用:在不惊动原始设计的基础上进行功能增强。

无侵入式编程
连接点:程序执行的任意位置,SpringAOP中,理解为方法的执行。
AOP 笔记_第1张图片
切入点:匹配连接点的式子,要追加功能的方法
在这里插入图片描述

通知(写在通知类中):共性功能,在切入点执行的操作。

  • SpringAOP中,最终以方法的形式呈现
    通知类:定义通知的类
    切面(Aspect):描述通知的共性功能和切入点的关系
步骤

AOP 笔记_第2张图片
代码实现步骤:
1、导入相关坐标
2、定义dao接口与实现类
3、定义通知类
4、@Pointcut注解定义切入点
AOP 笔记_第3张图片
5、@Before等注解绑定切入点与通知关系
6、@Component @Aspect告诉程序通知类用来AOP
7、@EnaleAspectJAutoProxy : 告诉程序注解开发AOP;开启功能

AOP工作流程

  • Spring容器启动
  • 读取所有切面配置中的切入点,只读取已经配置了(建立联系的)切入电
  • 初始化bean,判断bean对应的类中的方法是否匹配到任意切点
  • 匹配失败,创建对象
  • 匹配成功,创建目标对象的代理对象 (代理模式实现)
  • 获取bean执行方法
    在这里插入图片描述
    tips:AOP重写了toString
切入点表达式
  • 可以使用通配符
    AOP 笔记_第4张图片
AOP编码技巧
  • 安装AOP标准规范开发
  • 描述切入点描述接口
  • 在这里插入图片描述
  • 返回值对于增删改使用精确类型加速匹配;查询类使用*通配快速匹配
  • 包名书写避免…匹配,常用*做单个包描述匹配,或精确匹配
  • 接口名/类名书写名称与模块相关的采用*匹配,eg.UserService书写成*Service,绑定业务层接口
  • 方法名书写以动词进行精准匹配,名词采用匹配。eg. getById书写成getBy, selectAll书写成selectAll
  • 不使用异常作为匹配规则
AOP通知类型
  • 前置通知
  • 后置通知
  • 环绕通知
  • 返回后通知
  • 抛出异常后通知
环绕通知
  • @Around
    AOP 笔记_第5张图片
    有返回值情形
    AOP 笔记_第6张图片
    AOP 笔记_第7张图片

AOP通知获取数据

  • 获取参数
  • 获取返回值
  • 获取异常
    AOP 笔记_第8张图片

Spring事务

  • 事务管理员:发起事务方,在Spring中,通常指代业务层开启事务的方法。
  • 事务协调员:加入事务方,在Spring中,通常指代数据层方法,也可以是业务层方法。
rollbackFor:设置事务回滚异常

你可能感兴趣的:(java学习笔记,1024程序员节)