静态代理和JDK动态代理

(开发环境是MyEclipse)

静态代理示例

HellowStaticProxy代理, HellowObject被代理

HellowObject和HellowStaticProxy实现iHellowProxy接口

(iHellowProxy中声明被需要被代理的方法)

iHellowProxy接口:

HellowObject类:

HellowStaticObject类:

测试:

通过静态代理添加日志。

(如果在HellowObject中直接记录日志,之后需求变动时,要回到源码中修改。HellowObject只需要实现简单的hellow方法,有可能变动需求的记录日志功能和hellow方法分开,开闭原则)

JDK动态代理

(基于反射,不需要创建静态代理实现固定接口,灵活性更高)

(iHellowProxy接口和HellowObject类不变)

DynamicProxy类:

测试:

(在使用log4j记录日志,记得在BuildPath中把jar包导进来,并且在根目录下放log4j.properties)

(log4j.properties可以修改显示的Level,示例的rootLogger=info,stdout)

spring的AOP通过动态代理实现。通过动态代理,可以增强方法,如事务管理,添加日志等

(小菜鸟的学习记录)

原文地址:https://www.cnblogs.com/mySerilBlog/p/8424202.html