SpringAOP

image.png
  1. 拦截器可以配置。Advice Advisor Interceptor
    Advice :方法加强的类。MethodBeforeAdvice , AfterReturningAdvice
    Advisor : Advisor中包括一个Advice。可以多配置一个属性mappedNames。用来表示加强哪些方法
    Interceptor: 拦截器。

  2. 2.1 @PointCut 用来表示切面,哪些类中的哪些方法需要加强。

    2.2
    @Before
    @After 类似于finally。无论正常返回还是抛异常都会经过该方法。
    @Aroud before+afterReturning
    @AfterThrowing
    @AfterReturning 加上returning="retVal"可以在方法中获取返回值。

  1. AspectJ 和 spring的aop没有直接关系。springAop只是引用了Aspect包中的注解,具体实现方式都在spring-aop中。但是AspectJ功能更强大。

4.所有的拦截之后的加强都是针对类来说的。spring中,将beanFactory中的原来的类替换成代理类。
在spring启动过程中,配置了@Aspect的类将会在spring中注册一个BeanPostProcessor,这个类在初始化对象的时候,将对象进行加强。

5.具体的生成代理类通过jdk代理或cglib。当配置了后,默认直接使用cglib代理。如果没有该配置,则在类增强的时候,先判断该类是否实现了自定义的接口,如果实现了自定义接口则通过 jdk方式代理。若没有,则使用 cglib 基于继承的方式来代理。

你可能感兴趣的:(SpringAOP)