spring知识点3

来源:互联网 发布:男士防晒霜 知乎 编辑:程序博客网 时间:2024/06/10 03:21

一、AOP(Aspect-oriented programming,面向切面编程):

  什么是AOP?

  定义:将程序中的交叉业务逻辑提取出来,称之为切面。将这些切面动态织入到目标对象,然后生成一个代理对象的过程。

 

二、AOP核心概念

  1、Aspect(切面)

  切面,是对交叉业务逻辑的统称。

  2、Joinpoint(连接点)

  连接点,指切面可以织入到目标对象的位置(方法,属性等)。

  3、Advice(通知)

  通知,指切面的具体实现。

  4、Pointcut(切入点)

  切入点,指通知应用到哪些类的哪些方法或属性之上的规则。

  5、Introduction(引入)

  引入,指动态地给一个对象增加方法或属性的一种特殊的通知。

  6、Weaving(织入)

  织入,指将通知插入到目标对象。

  7、Target(目标对象)

  目标对象,指需要织入切面的对象。

  8、Proxy(代理对象)

  代理对象,指切面织入目标对象之后形成的对象。

 

三、Spring AOP原理

  采用动态代理模式。

 

  Spring AOP采用动态代理的过程:

(1) 将切面使用动态代理的方式动态织入到目标对象(被代理类),形成一个代理对象;

(2) 目标对象如果没有实现代理接口,那么Spring会采用CGLib来生成代理对象,该代理对象是目标对象的子类;

(3) 目标对象如果是final类,并且也没实现代理接口,就不能运用AOP。

 

四、Spring的通知

1、Spring的通知类型

(1) MethodBeforeAdvice

  类全名:org.springframework.aop.MethodBeforeAdvice

  在方法调用之前,做处理。

  不能够改变返回值

  不能够改变目标方法的流程,也不能中断流程的处理过程(除非抛出异常)

(2) AfterReturningAdvice

  类全名:org.springframework.aop.AfterReturningAdvice  

在方法调用之后,做处理。

  不能够改变返回值

  不能够改变目标方法的流程,也不能中断流程的处理过程(除非抛出异常)

(3) MethodInterceptor

  类全名:org.aopalliance.intercept.MethodInterceptor

在方法调用之前以及之后,做处理。

  可以改变返回值,也可以改变流程。

(4) ThrowsAdvice

  类全名:org.springframework.aop.ThrowsAdvice

在方法抛出异常后,做处理。

  当该通知处理完异常后,会简单地将异常再次抛出给目标调用方法。

0 0