AOP

发布时间 2023-08-08 01:00:23作者: Rover20230226

Spring框架

核心一:IOC - 控制反转 / DI - 依赖注入(控制反转,把创建对象的权利交给Spring)

核心二:AOP(面向切面编程,在不改变源代码的情况下对代码进行增强,动态代理,静态织入)

核心作用:解耦

 

业务层能够控制事务


开闭原则

开:扩展

闭:不修改,子类继承

继承:在不改变父类方法的前提下,对父类的扩展


AOP( 面向切面编程 )
思想 —— 面向切面编程
实现 —— 动态代理
AOP思想的作用:
1、在不改变原程序代码前提下,对方法功能增强
2、像添加插件一样,任意插拔。(程序更加灵活)


AOP:在不修改源代码的基础上,对原有功能进行增强


切入思想
<——


代理工厂
重点:method invoke


JDK增强
能不能增强,看目标方法的对象是怎么创建的!


开发阶段分别开发
运行阶段组装运行


目标对象
连接点
切面类
通知
织入
切入点 + 切面类

 

多个切面类的执行顺序
根据类名的字母顺序和数字顺序排列优先级

先进后出

执行顺序:
切面类1 前置
切面类2 前置
目标类
切面类2 后置
切面类1 前置


使用SpringAop完成在业务层类中的方法上打印日志
** 基础步骤
1、创建模块、导入依赖
2、创建实体类
3、创建业务层接口和实现类
不操作数据库,不写Dao
4、创建日志类
切面类
5、创建配置类
@Conponent
6、测试

** 动态代理步骤
1、在增强类中配置切点和切面
@Before —— log.Logger
2、在配置类中激活切面代理
config.SpringConfig
@ComponentScan("com.itheima") 扫描
@EnableAspectJAutoProxy // 开启切面代理
3、测试

 

————————————————
环绕通知

切入点表达式