AOP
AOP编程,基于动态代理将正常业务流中通用,模板型的功能(日志记录,数据库库事务)分离出来(当作过滤器)在运行时织入到正常业务流的的过程。这样有利于代码复用以及更加注重业务逻辑的开发。
Spring AOP
AOP概念不是Spring独有的,Spring只是支持方法层面上的AOP.Spring利用JDK动态代理以及CGLIB来创建动态代理对象来实现AOP。
AOP中的概念
切面:包括切点和通知,可以理解为正常业务流的运行环境。
通知:切面中具体执行的部分--从正常业务流中抽象出来的部分
切点:表示什么时候把通知织入到业务流中去
连接点:表示在哪织入通知,Spring中是某个方法
织入:创建动态代理对象并将通知织入到相应的流程当中去。
引入:给类引入新方法(增强类实现额外的接口)
通知的分类
- 前置通知@Before:业务流程之前运行
- 后置通知@After:业务流程之后运行(无论业务流程是否正常结束,是否抛出异常,若有环绕通知则在环绕通知后运行)
- 返回通知@AfterReturning:业务流程正常结束之后运行(若有后置通知则后置通知后运行)
- 异常通知@AfterThrowing:业务流抛出异常时运行
- 环绕通知@Around:在业务流运行之前运行,若没有调度业务流则直接跳过业务流。若调度业务流则运行完业务流之后会运行环绕中剩下的部分,再运行后置通知