什么是面向切面编程编程
横切关注点:影响应用多处的功能(安全、事务、日志)安全
切面:模块化
横切关注点被模块化为特殊的类,这些类称为切面代理
优势:日志
每一个关注点如今都集中于一处,而不是分散到多处代码中
服务模块更简洁,服务模块只需关注核心代码。对象
AOP 术语生命周期
- Before——在方法调用以前调用通知
- After——在方法完成以后调用通知,不管方法执行成功与否
- After-returning——在方法执行成功以后调用通知
- After-throwing——在方法抛出异常后进行通知
- Around——通知包裹了被通知的方法,在被通知的方法调用以前和调用以后执行自定义的行为
- 编译期——切面在目标类编译时期被织入,这种方式须要特殊编译器。AspectJ的织入编译器就是以这种方式织入切面。
- 类加载期——切面在类加载到
- JVM ,这种方式须要特殊的类加载器,他能够在目标类被引入应用以前加强该目标类的字节码。AspectJ5 的 LTW 就支持这种织入方式
- 运行期——切面在应用运行期间的某个时刻被织入。通常状况下,在织入切面时候,AOP 容器会为目标对象动态的建立代理对象。Spring AOP 就是以这种方式织入切面。