AOP
面向切面编程对业务逻辑隔离,降低耦合度
不修改源代码,加入权限判断功能
AOP底层
动态代理:
1.有接口的情况:JDK动态代理
实现类
2.没有接口:CGLIB动态代理
子类
(跳过了JDK动态代理源码练习,以后再说)
AOP术语
1.连接点:类中那些方法可以被增强,这些方法称为连接点
2.切入点:实际被真正增强的方法
3.通知(增强):实际增强的逻辑,通知有多种类型,有:前置通知,后置通知,环绕通知,异常通知,最终通知
4.切面:动作:把通知应用到切入点的过程
AOP操作
用AspectJ实现AOP
AspectJ不是spring内容,但是可以使用AOP操作
1.基于xml
2.基于注解(一般)
3.切入点表达式:知道那个类的那个方法需要进行增强
语法结构:
流程:
1.建类
2.建增强类
3.进行通知配置:
在Spring配置文件中,开启注解扫描
使用注解创建和User和UserProxy对象
在增强类上面添加注解@AspectJ
在Spring配置文件中开启生成代理对象