什么是Aop?
Aop的全称是面向切面编程,本质上,不通过改源码的方式,添加新的功能,如登陆时的权限判断。
1.面向切面编程,利用的是aop可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各个部分质检的耦合度降低,提高程序的可用性,同事提高了开发的效率。
2.通俗描述,不通过修改源代码的方式,在主干功能里面添加新功能。
Aop底层原理是什么?
Aop的底层原理是动态代理,
1.有接口情况下,使用jdk动态代理
创建接口实现类代理对象,增强类的方法。
具体操作步骤: 调用Proxy的newProxyInstance方法,该方法中有三个参数,
参数一、类加载器
参数二、增强方法所在的类,这个类实现的接口,支持多个接口
参数三、实现接口InvocationHandler创建代理对象,学增强部分的代码。
2.没有接口情况下,使用cglib动态代理
没有接口的情况下,可以用原始方法,用子类继承父类,将父类的进行增强。
用动态代理实现:创建当前类子类的代理对象。
Aop(术语)
1、连接点
类里面方法可以被增强,那么这些方法就被称作连接点。
2、切入点
实际被真正增强的方法,称为切入点。
3、通知(增强)
实际增强的逻辑部分就叫通知
五种通知:
前置通知 @before
后置通知 @AfterReturning (如果有异常没返回值则不通知)
环绕通知 @Around 环绕通知
异常通知 @AfterThrowing 异常通知。
最终通知 @After 最终通知,不管怎么样都通知
4、切面
切面是个动作,把握我们的通知应用到切入点的过程就叫通知。
2021.3.31更新
Aop的操作
一、Spring 框架一般都是基于AspectJ实现Aop操作
1、什么是AspectJ?
AspectJ不是Spring组成部分,独立Aop框架,一般把AspectJ和Spring框架一起使用,进行Aop操作。
2、基于AspectJ实现Aop操作
(1)基于Xml配置文件实现
(2)基于注解方式实现
(3) 进行通知的配置
a.在Spring 配置文件中开启注解扫描
b.使用注解创建要增强的对象和增强功能的对象
c.在增强类上面添加注解@Aspect
d.在Spring 配置文件中开启生成代理对象
3、操作前要引入相关依赖
4、切入点表达式
(1)作用,知道对哪个类里面的那个方法进行增强
(2)语法结构
execution(【权限修饰符】【返回类型】【全类名】【方法名】【参数列表】)