Aop: aspect object programming 面向切面编程
功能: 让关注点代码与业务代码分离!
关注点:重复代码就叫做关注点。
切面:关注点形成的类,就叫切面(类)!
面向切面编程就是指: 对很多功能都有的重复的代码抽取,再在运行的时候往业务方法上动态植入“切面类代码”。
1 切面(Aspect)
通过分析,抽取出通用的功能,即“切面”。事务、日志、安全性的框架、权限都是切面连接点(Joinpoint)
2 连接点
是执行程序过程中的特定的点。Spring框架只支持方法作为连接点,如方法调用之前、方法调用后、或者发生异常时等。
3 切入点(Pointcut)
执行目标对象方法,动态植入切面代码。
可以通过切入点表达式,指定拦截哪些类的哪些方法; 给指定的类在运行的时候植入切面类代码。
切入点是连接点的集合,通知将在满足一个切入点表达式的所有连接点上运行
4 通知(Advice)
通知就是切面的具体实现
springboot:@EnableAspectJAutoProxy - 开启对AspectJ自动代理技术