一, 概念
AOP 面向切面编程, 是函数式编程的延申, 是对 OOP 的补充;
代理模式: 拦截增强作用, 增强功能;
1,java 继承, 纵向共性抽取,
2, 横向切面 AOP 织入增强代码方式
二, 原理是通过代理机制, 代理模式的意思就是用代理对象增强原来的真实对象的功能, 如 Filter 拦截器;
其中, Proxy 是 java 自带的一个类;
四, 手动实现 AOP 编程, 用 JDK 的 Proxy 代理, AOP 只是一种思想
代理: 必须要有接口存在, 因为创建代理对象时参数列表第二个参数就是接口的实现类对象 (真实对象), 接口是不能创建对象的;
1, 静态工厂类:
其中, 先创建了接口的实现类对象, 为真实对象, 再创建代理对象来拦截和增强真实对象的方法功能;
其中, 这边的创建代理对象的第三个参数列表是一个匿名内部类, 匿名内部类访问外面的静态方法中的局部变量时, 要让这变量用 final 修饰;
代码测试:
其中, 使用静态工厂创建出代理对象增强真实对象的方法功能;
五, 使用 cglib 代理手动实现 AOP
1, 代码实现
代码测试:
2, 细节优化
proxy 代理对象是真实对象的子类;
解耦是和外面的 studentService 对象没有关系了;
动态代理意思是这个代理对象是程序运行时生成的, 代码里看不到这个类和对象存在;
AOP
来源: http://www.bubuko.com/infodetail-3219201.html