AOP
AOP:Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理
实现程序的统一维护的一种技术。是Spring框架中的一个重要内容。利用AOP可以对业务逻辑的各个部分进行隔离,从而提高程序的可重用性,同时提高了开发的效率。?
AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码?
经典应用:事务管理、性能监视、安全检查、缓存、日志等
- AOP实现原理
aop底层将采用代理机制进行实现。
目标类有接口+实现类:底层采用jdk的动态代理Proxy实现。
目标类有实现类:底层采用cglib字节码增强。
- AOP术语
1.target(目标类):需要被代理或增强的类。例如:UserService。
2.Joinpoint(连接点):指可能被增强的方法。例如:所有的方法。
3.PointCut(切入点):已经被增强的连接点。例如:addUser()
4.advice(通知/增强):要增强的代码。例如:after、before。
5. weaving(织入):指把增强advice应用到目标对象target来创建代理对象proxy的过程。
6.proxy代理类
7. sspect(切面):是切入点pointcut和通知advice的结合,组成一个特殊的面。
代理的实现方式
手动方式
- JDK动态代理
1.编写目标类接口+实现类。
2.编写切面类,对连接点进行增强。
3.创建工厂,生产目标类的代理类对象,对目标类进行增强。
4.在配置文件中配置切面类和工厂类生产目标类的代理类对象。
5.测试
- CGLIB字节码增强
半自动方式
- AOP联盟通知类型
- 实现步骤
全自动方式
AspectJ
AspectJ是一个基于Java语言的AOP框架,Spring2.0开始,Spring AOP引入对Aspect的支持,AspectJ扩展了Java语言,提供了一个专门的编译器,在编译时提供横向代码的织入