静态代理和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通过动态代理实现。通过动态代理,可以增强方法,如事务管理,添加日志等
(小菜鸟的学习记录)