概念介绍
面向切面编程
把软件系统分为两个方面
- 核心关注点
- 横切关注点
由于业务处理主要关注的是核心关注点,但是横切关注点经常发生在核心关注点多处,且使用上基本相似。比如权限认证,日志,事务处理,lazy-loading等。
关键技术
- 动态代理
截取消息,对该消息进行装饰,以取代原有对象行为的执行 - 静态织入
引入特定的语法创建“方面”,从而使编译期能够织入有关“方面”的代码
原理
AOP框架负责动态的生成AOP代理类,这个代理类的方法则由Advice和回调目标对象的方法所组成。
即:
代理对象的方法 = 增强处理 + 被代理对象的方法
在代理对象invoke方法调用目标对象方法时,调用配置的通知。