-
拦截器可以配置。Advice Advisor Interceptor
Advice :方法加强的类。MethodBeforeAdvice , AfterReturningAdvice
Advisor : Advisor中包括一个Advice。可以多配置一个属性mappedNames。用来表示加强哪些方法
Interceptor: 拦截器。 -
2.1 @PointCut 用来表示切面,哪些类中的哪些方法需要加强。
2.2
@Before
@After 类似于finally。无论正常返回还是抛异常都会经过该方法。
@Aroud before+afterReturning
@AfterThrowing
@AfterReturning 加上returning="retVal"可以在方法中获取返回值。
- AspectJ 和 spring的aop没有直接关系。springAop只是引用了Aspect包中的注解,具体实现方式都在spring-aop中。但是AspectJ功能更强大。
4.所有的拦截之后的加强都是针对类来说的。spring中,将beanFactory中的原来的类替换成代理类。
在spring启动过程中,配置了@Aspect的类将会在spring中注册一个BeanPostProcessor,这个类在初始化对象的时候,将对象进行加强。
5.具体的生成代理类通过jdk代理或cglib。当配置了<aop:config proxy-target-class="true">后,默认直接使用cglib代理。如果没有该配置,则在类增强的时候,先判断该类是否实现了自定义的接口,如果实现了自定义接口则通过 jdk方式代理。若没有,则使用 cglib 基于继承的方式来代理。
网友评论