AOP:Aspect Oriented Programming 面向切面编程
OOP:Object Oriented Programming 面向对象编程
一、日志
(1)硬编码与静态代理
硬编码:

静态代理:


未加日志的代理类:
加了日志的代理类:
测试:

(2)动态代理
(3)日志工具类

二、Spring简化jdk的proxy的动态代理

编写切面和通知方法实现AOP
切入点表达式通配符
切入点表达式的其他写法:
组件在容器中其实是代理对象:


通知方法执行流程:

JoinPoint连接点信息:
@PointCut抽取切入点表达式:
@Pointcut抽取切入点表达式

多切面执行顺序:

数字越小,越先执行,越在外围。

环绕通知:
(1)拦截器目标方法执行,执行前后进行修改
(2)一定需要抛出异常,方便多切面情况下异常感知链路是通的。
AOP应用场景: