Spring-AOP基础设施介绍-AspectJ配套设施
我们仅列出Spring-AOP基础设施介绍-核心中不同的部分。
提示:
AspectJ在使用Joinpoint时,没有变化,所以略去了;
---共享原有基础设施
一.核心组件
1.Pointcut
1.Pointcut:用于描述Joinpoint集合。具体匹配时委托给了aspectj类库处理。
查看大图
2.Advice
3.Advisor
提示:
Advice分两种类型:
1.per-class类型的Advice:该类型的Advice的实例可以在目标对象类的
所有实例之间共享
---我们把这种类型的作为学习的重点
2.per-instance类型的Advice不会在目标类所有对象实例之间共享,而是
会为不同的实例对象保存它们各自的状态以及相关逻辑。
(a).per-class类型的Advisor:
(b).per-instance类型的Advisor:
二.其他组件支持
同先前介绍的那样,在支持AspectJ类型声明的AOP时,也需要其他组件支持。以下分别描述:
1.AspectMetadata
当我们通过反射获取到标注@Aspect注解的类时,用于包装当前bean信息,作为进一步对Aspect处理的元数据。
2.AspectInstanceFactory
当我们有了元数据,Spring为我们提供了AspectInstanceFactory用于操作元数据。
查看大图
3.AspectJAdvisorFactory
现在我们就可以由Aspect元数据构建Advisor和Advice了,由AspectJAdvisorFactory负责。
4.BeanFactoryAspectJAdvisorsBuilder
BeanFactoryAspectJAdvisorsBuilder:在BeanFactory中检索使用@AspectJ
注解的bean并基于它们构建Spring Advisor,以用于自动代理。其整合了上面3个其他组件。
那我们接下来看看Spring如何使用的:Spring-AOP整合Aspect介绍
快速导航: