静态代理和JDK动态代理
(開發(fā)環(huán)境是MyEclipse)
靜態(tài)代理示例
HellowStaticProxy代理, HellowObject被代理
HellowObject和HellowStaticProxy實現(xiàn)iHellowProxy接口
(iHellowProxy中聲明被需要被代理的方法)
?
iHellowProxy接口:
?
HellowObject類:
HellowStaticObject類:
?
測試:
?
?
通過靜態(tài)代理添加日志。
(如果在HellowObject中直接記錄日志,之后需求變動時,要回到源碼中修改。HellowObject只需要實現(xiàn)簡單的hellow方法,有可能變動需求的記錄日志功能和hellow方法分開,開閉原則)
?
JDK動態(tài)代理
(基于反射,不需要創(chuàng)建靜態(tài)代理實現(xiàn)固定接口,靈活性更高)
?
(iHellowProxy接口和HellowObject類不變)
?
DynamicProxy類:
測試:
?
(在使用log4j記錄日志,記得在BuildPath中把jar包導(dǎo)進來,并且在根目錄下放log4j.properties)
(log4j.properties可以修改顯示的Level,示例的rootLogger=info,stdout)
spring的AOP通過動態(tài)代理實現(xiàn)。通過動態(tài)代理,可以增強方法,如事務(wù)管理,添加日志等
(小菜鳥的學習記錄)
轉(zhuǎn)載于:https://www.cnblogs.com/mySerilBlog/p/8424202.html
總結(jié)
以上是生活随笔為你收集整理的静态代理和JDK动态代理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《大话数据结构》一些基础知识
- 下一篇: jspservlet初体验——用户登录功