Skip to content

Latest commit

 

History

History
32 lines (17 loc) · 1.17 KB

File metadata and controls

32 lines (17 loc) · 1.17 KB

AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待。

AOP的基本概念

(1)Aspect(切面):通常是一个类,里面可以定义切入点和通知

(2)JointPoint(连接点):程序执行过程中明确的点,一般是方法的调用

(3)Advice(通知):AOP在特定的切入点上执行的增强处理,有before,after,afterReturning,afterThrowing,around

(4)Pointcut(切入点):就是带有通知的连接点,在程序中主要体现为书写切入点表达式

应用场景:

权限控制,缓存优化。

实现原理:

基于代理模式,JDK动态代理和Cglib动态代理。

代理模式

对象在调用方法前处理,在调用方法后处理。。

  • 静态代理:由自己实现代理类。

  • 动态代理:由自带工具类生产代理类。

JDK动态代理,交由JdkProxyHandler创建代理对象,运用了反射机制。

Cglib动态代理,运用字节码技术。

SpringAOP结合两种代理。如果目标对象的实现类实现了接口,AOP采用JDK动态代理;如果目标对象没有实现接口,AOP采用Cglib生成代理类。