第一章 动态代理
什么是动态代理?
代理模式在 Java 领域很多地方都有应用,它分为静态代理和动态代理,其中 Spring AOP 就是动态代理的典型例子。动态代理又分为接口代理和 cglib (子类代理)。
代理模式在我们日常中很常见,生活处处有代理:
- 看张学友的演唱会很难抢票,可以找黄牛排队买
- 嫌出去吃饭麻烦,可以叫外卖
无论是黄牛、外卖骑手都得帮我们干活。但是他们不能一手包办(比如黄牛不能帮我吃饭),他们只能做我们不能或者不想做的事。
- 找黄牛可以帮我排队买上张学友的演唱会门票
- 外卖骑手可以帮我把饭送到楼下
所以,你看。代理模式其实就是当前对象不愿意做的事情,委托给别的对象做。
为什么要使用动态代理?
- 1.分离系统中的各种关注点,将核心关注点和横切关注点分离开来。
- 2.减少代码的重复,各个模块的重用性加强。
- 3.降低 模块间的耦合度,提高代码的可操作性和可维护性。
如果我们不适用AOP,那么必然会导致项目中的日志与具体的业务逻辑都写在一起,而且是每一个接口里面都需要日志,那么日志的代码数量远远超过具体业务逻辑代码,这样不利于后期的维护已修改。同时违背了软件设计的思想。如果使用的AOP,我们把这种不是必然需要的同时也是服务具体业务的模块单独分装起来,在业务逻辑前或后直接调用,从而提高代码的可操作性和可维护性。
第二章 AOP
什么是AOP?
AOP(Aspect Oriented Programming)即面向切面编程&#x