① Spring的静态代理

静态代理(概念):通过手动编写的方式,为目标对象提供代理对象。
作用:将额外功能的代码抽取到代理类中,解耦和。
目标对象角度:为目标对象增强了功能。

静态代理实现步骤

  1. 手动编写代理对象的类(实现目标对象的接口 为了保证代理对象和目标对象拥有相同的方法)
  2. 方法中添加增强功能(额外功能)以及目标方法的调用
  3. 将代理类交给Spring工厂管理

静态代理的缺点
① 每个目标类都要手动写一个代理类
② 大量的增强代码冗余

② Spring的动态代理

机制介绍:
a.准备目标对象(创建目标对象)
b.准备额外功能(增强功能:事务的控制,日志处理、性能分析、权限控制…)
c.额外功能 + 目标对象 = 代理类

③ Spring AOP编码步骤

①导入Spring AOP的相关jar包
Spring的AOP代理
②书写目标类,交给Spring管理
③额外功能类书写,交给Spring管理
Spring的AOP代理
④将额外功能和目标对象,组装后,生成代理类、

Spring的AOP代理
Spring的AOP代理
⑤获得代理类,并调用方法
根据目标对象的id,获得Spring AOP生成并替换以后的代理类对象。

④ AOP思想

AOP:( Aspect Oriented Program ) 面向切面编程

  • 面向对象编程:
    以对象为基本单位的程序开发,通过对象间的彼此协同,相互调用,完成程序的构建。
  • 面向切面编程:
    以切面为基本单位的程序开发,通过切面间的彼此协同,相互调用,完成程序的构建。

(1)AOP思想:
在不修改目标类的代码情况下,动态为其增加的额外功能的代码。

(2)Spring AOP技术本质:
通过动态为目标类生成代理类的方式,用代理类替换目标对象,变相实现了,动态为目标对象增加额外功能的效果。

(3)笔试:介绍你对Spring AOP的理解:

  1. 面向切面编程技术,不修改目标类的代码的情况下,动态为其增加额外功能。
  2. 本质上,通过动态为其生成代理类的,使用代理类替换目标类对象的方式,变相实现了,为目标对象增加额外功能的效果。

⑤ 额外功能类的详解

Spring的AOP代理

⑥ 切入点详解

切入点:增加额外功能的方法的位置。
①execution()表达式: 通过方法明确切入点
a.语法:execution(返回值 包名.类名.方法名(参数类型,参数类型))
b.其他通用配置:

Spring的AOP代理
②@annotation()表达式: 通过注解明确切入点
Spring的AOP代理

⑦ 实战应用

1)事务控制:事务的开启、提交
2)日记记录:记录方法执行痕迹(类名、方法、时间点、收到参数、返回结果…)
3)性能监控:监控方法执行消耗的时间

⑧ 自定义注解

1)一种特殊的类:@注解类名
2)作用:对类或方法做标记。
3)在需要添加额外功能的方法上添加注解。
4)使用切入点@annotation表达式找到额外功能加入的位置。
Spring的AOP代理
如何自定义注解:
Spring的AOP代理

上一篇:Spring IOC / DI(工厂模式)
下一篇:Spring简化事务控制

相关文章: