生活中的代理和程序中的代理
AOP
系统中存在很多交叉业务,何谓交叉业务?交叉业务是贯穿在每个模块的公共部分。
交叉业务图解:
用具体的程序代码描述交叉业务:
交叉业务的编程问题即为面向切面的编程,简称AOP。AOP的目的就是要使交叉业务模块化。可以采用将切面代码移动到原始方法的周围,这与直接在
方法中编写切面代码的运行效果是一样的,如下:
使用代理技术正好可以解决这个问题,代理是实现AOP功能的核心和关键技术。
代理技术的种类
静态代理和动态代理
要为系统中的各种接口的类增加代理功能,那就需要太多的代理类,全部采用静态代理的方式,将是一种灾难。
JVM可以再运行期动态生成出类的字节码,这种动态生成的类往往被用做代理类,即动态代理。
动态代理的实现
InvocationHandler内部原理
动态代理的工作原理图
实现AOP的封装与配置