1、 思维导图
![d7490d5d77451d1f457ab8f2747c5038.png](https://img-blog.csdnimg.cn/img_convert/d7490d5d77451d1f457ab8f2747c5038.png)
2、 Spring
(1)AOP术语
- 通知Advice ——切面要做什么,何时执行。何时,包括方法调用前、方法调用后、方法成功调用后、方法调用抛异常后、环绕(Around)。环绕允许提供一些需要跨越方法调用前后的功能,如计算调用耗时。
- 连接点Joinpoint —— 应用执行时能插入切面的点。实际上是一个逻辑概念,不体现在配置中。
- 切点Pointcut —— 执行通知的具体的连接点。
- 切面Aspect —— 通知+切点
- 引入Introduction ——允许为类添加新的方法或属性。(个人理解即应用使用切面中的方法和属性,就好像这些方法和属性是原生的一样。可以参考aop:declare-parents元素)
- 织入Weaving —— 将切面应用到目标对象创建新的代理对象的过程,Spring使用的是运行时。编译期和类加载时是其他的方式。
(2) Bean的生命周期
虽然被称为生命周期,实际上指的是bean在初始化、回收期间调用了哪些方法。如果只看《Spring实战》,可以看到类似下面的图
![996c9d91ae8ae969d59001a86cd6993f.png](https://img-blog.csdnimg.cn/img_convert/996c9d91ae8ae969d59001a86cd6993f.png)
(3) Cglib和JdkProxy
1、与Spring的关系
这是Spring AOP的两种实现方式。根据官方文档:
- 默认使用JdkProxy
- 对于被代理对象没有实现任何接口,使用Cglib
- 可以强制指定使用Cglib。这样就可以解释为什么有的bean实现了接口,有的没有,但是在同一个工程中可以并存了
2、示例代码
![5268427a3be571260536916009e81510.png](https://img-blog.csdnimg.cn/img_convert/5268427a3be571260536916009e81510.png)
![6032bee714b341bb718eec0f7718d4a4.png](https://img-blog.csdnimg.cn/img_convert/6032bee714b341bb718eec0f7718d4a4.png)
![6bf4dcd127059861e173484a57602a2f.png](https://img-blog.csdnimg.cn/img_convert/6bf4dcd127059861e173484a57602a2f.png)