Spring中的AOP是什么?

提问者:帅平 问题分类:面试刷题

Spring中的AOP是什么?

1 个回答
Rae
Rae 管理员

AOP 意为:「面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术」。

AOP 是 「OOP(面向对象编程) 的延续」,是 Spring 框架中的一个重要内容,是函数式编程的一种衍生范型。利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

「AOP 实现主要分为两类:」

「静态 AOP 实现」, AOP 框架「在编译阶段」对程序源代码进行修改,生成了静态的 AOP 代理类(生成的 *.class 文件已经被改掉了,需要使用特定的编译器),比如 AspectJ
「动态 AOP 实现」, AOP 框架「在运行阶段」对动态生成代理对象(在内存中以 JDK 动态代理,或 CGlib 动态地生成 AOP 代理类),如 SpringAOP

spring 中 AOP 的实现是「通过动态代理实现的」,如果是实现了接口就会使用 JDK 动态代理,否则就使用 CGLIB 代理。

「有 5 种通知类型:」
「@Before」:在目标方法调用前去通知
「@AfterReturning」:在目标方法返回或异常后调用
「@AfterThrowing」:在目标方法返回后调用
「@After」:在目标方法异常后调用
「@Around」:将目标方法封装起来,自己确定调用时机

发布于:1个月前 (10-20)
我来回答