AOP的概念
什么是AOP
- 面向切面编程,利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可用性,同时也提高了开发的效率。
- 通俗描述:不通过修改源代码的方式,在主干功能里面添加新功能。
- 例如我们很多系统的日志。
AOP底层原理
AOP底层使用动态代理实现
(1)有两种情况的动态代理
- 有接口情况,使用JDK动态代理
创建接口实现类的代理对象,增强类方法
底层实现:一个proxy类实现InvocationHandler的invoke方法,然后对其传入的接口进行增强操作。 - 没有接口的情况,是哦那个CGLIB动态代理
创建子类的代理对象,增强类方法
AOP常见的几个术语
AOP用到的注解
@Component–添加类到spring容器中
@Aspect–使用AOP增强的类
@Order(1)–多个增强类时,优先执行参数小的类
几种通知方式的注解
@Before–之前
@AfterReturning–后置通知,返回之后
@After–最终通知,和finally差不多。
@AfterThrowing–异常通知
@Around–环绕通知{
环绕通知有一个参数(ProceedingJoinPoint pjp),需要用pjp.proceed();执行该调用,写在这个调用之前的就是环绕之前的逻辑,写在之后的就是环绕之后的逻辑
}