title: Spring AOP - 静态代理、动态代理
date: 2019-07-31 15:07:43
tags: [Spring,JavaEE]
本文主要简单介绍一下静态代理和动态代理和使用Spring AOP应用
静态代理(jdk1.5)
目标对象和代理对象实现同一个接口,代理对象引用目标对象
- 目标对象
- 增删改查方法(主营业务)
- 代理对象
- 不仅仅实现目标对象的方法(主营业务),还可以做别的方法(额外业务)
- 安全检查
- 权限检查
- 日志记录
- 封装切面类-Aspect(对主营业务没有影响)
- 散落在目标对象中的横切性关注点拿出来模块化到类中
- 安全检查
- 权限检查
- 日志记录
- 散落在目标对象中的横切性关注点拿出来模块化到类中
动态代理
目标对象实现一个接口(增删改查),JVM通过反射动态生成代理对象,另外一个类实现
- 目标对象
- 代理对象(通过反射实现和目标对象相同的几口,通过反射)
- 私有目标对象属性
- 实现的接口方法
- 切口方法
Spring AOP
通过动态代理的方式
AOP术语解释
-
目标对象-
TargetObject
- 散落在目标对象中的横切性关注点拿出来模块化到类(
MyAspect
)中
- 散落在目标对象中的横切性关注点拿出来模块化到类(
-
标识方式
- 注解
- spring配置
-
MyAspect
(@Aspect注解)-
Advice
通知在什么时候执行
-
before:
@Before("allMethod")
-
after:
-
throw:
-
-
PointCut
设置范围,具体作用在目标对象的哪个方法上与
JoinPoint
的关系-植入(Weave)@Pointcut("execution(* add*(..)) || execution(*del*(..)))" void allMethod();
-
JoinPoint
标识,只是一个概念逻辑
-