SpringAOP的原理
时间: 2024-06-07 14:09:07 浏览: 12
Spring AOP(面向切面编程)使用代理模式来实现,它通过在运行时动态地为目标对象创建一个代理对象,并在代理对象中注入横切关注点(切面)的代码,从而实现了对目标对象的增强。
Spring AOP 的核心原理是基于动态代理。Spring AOP 提供了两种代理方式:JDK 动态代理和 CGLIB 代理。如果目标对象实现了接口,则使用 JDK 动态代理,否则使用 CGLIB 代理。
Spring AOP 主要涉及以下三个概念:
1. 切面(Aspect):切面是一个类,其中包含了一些横切关注点(Advice)和切点(Pointcut)。横切关注点是指在何时、何地、何种情况下要执行的代码,而切点则是指在哪些连接点上应用切面。
2. 连接点(Join point):连接点是程序执行过程中的一个特定点,例如方法调用、异常抛出、属性设置等。
3. 通知(Advice):通知是切面在连接点上执行的动作。Spring AOP 提供了以下五种通知类型:
- 前置通知(Before advice):在连接点之前执行。
- 后置通知(After returning advice):在连接点执行之后执行。
- 环绕通知(Around advice):在连接点之前和之后都执行。
- 异常通知(After throwing advice):在连接点抛出异常后执行。
- 最终通知(After advice):在连接点执行之后执行,无论连接点是否抛出异常。
Spring AOP 的执行流程如下:
1. Spring 容器启动时,根据配置文件或注解创建切面(Aspect)对象。
2. 当一个 Bean 被实例化时,Spring 将会检查它是否需要被代理。
3. 如果需要代理,则 Spring 会为该 Bean 创建一个代理对象,并将代理对象注入到容器中。
4. 当客户端请求该 Bean 时,实际上是请求了代理对象。
5. 当代理对象的方法被调用时,代理对象会拦截该方法的调用,并根据配置文件或注解决定是否执行横切关注点的代码。
6. 最后,代理对象将该方法的调用委托给目标对象来执行。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)