手记

【金秋打卡】第13天 基于注解开发Spring AOP

课程信息

  • 学习课程:Java工程师2022版
  • 章节名称:Spring AOP面向切面编程-基于注解开发Spring AOP
  • 讲师:悟空

课程内容

基于注解开发Spring AOP

<!-- 初始化IOC容器 -->
<context:component-scan base-package="com.imooc"/>
<!-- 启用Spring AOP注解模式 -->
<aop:aspect-autoproxy />

给切面添加注解:
@Component注解:标记当前类为组件
@Aspect注解:说明当前类是切面类
@Around(“execution()")环绕通知注解,参数为pointcut切点表达式

Spring AOP底层实现原理(重点)

Spring基于设计模式中的代理模式实现功能动态扩展,包含两种形式:

目标类拥有接口,通过JDK动态代理实现功能扩展

目标类没有接口,通过CGLib组件实现功能扩展

代理模式:

代理模式通过代理对象对原对象实现功能扩展

代理模式:类比回顾——租房,租户、中介、房东、二房东,接口、嵌套

静态代理——必须手动创建代理类的代理模式使用方式

动态代理(自动):在JDK1.2以后,由于反射机制的引入,为我们自动创建代理模式提供了可能
创建代理类:代理类持有委托类的对象属性,实例化时通过构造方法给委托类赋值,就相当于持有委托类对象了)
动态代理必须实现接口才可以运行
在invoke方法对目标方法进行增强
CGLib实现代理类

CGLIb是运行时字节码增强技术

Spring AOP扩展无接口类用CGLib

AOP会运行时生成目标继承类字节码的方式进行行为扩展

学习收获

学习了基于注解开发Spring AOP,Spring AOP的静态代理和动态代理模式

打卡截图


0人推荐
随时随地看视频
慕课网APP