<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    gembin

    OSGi, Eclipse Equinox, ECF, Virgo, Gemini, Apache Felix, Karaf, Aires, Camel, Eclipse RCP

    HBase, Hadoop, ZooKeeper, Cassandra

    Flex4, AS3, Swiz framework, GraniteDS, BlazeDS etc.

    There is nothing that software can't fix. Unfortunately, there is also nothing that software can't completely fuck up. That gap is called talent.

    About Me

     

    Spring AOP: JDK Dynamic Proxy vs. CGLib proxy

    Spring's AOP is proxy-based. Spring provides two different options to create the proxies. One is based on JDK dynamic proxies and works with interfaces, the other one utilizes CGLib and is based on classes. (That's why the property is called proxyTargetClass respectively proxy-target-class.) For the moment I just want to provide a quick summary on the pros and cons of both options:

    JDK dynamic proxies:

    • The class has to implement interfaces. Otherwise you will get ClassCastExceptions saying that $Proxy0 can not be casted to the particular class.

    • Eventually dynamic proxies force you to program to interfaces since you can not cast the proxy to the class - a feature I really like about them.


    CGLib proxies:

    • The proxies are created by sub-classing the actual class. This means wherever an instance of the class is used it is also possible to use the CGLib proxy.

    • The class needs to provide a default constructor, i.e. without any arguments. Otherwise you'll get an IllegalArgumentException: "Superclass has no null constructors but no arguments were given." This makes constructor injection impossible.

    • The proxying does not work with final methods since the proxy sub class can not override the class' implementation.

    • The CGLib proxy is final, so proxying a proxy does not work. You will get an IllegalArgumentException saying "Cannot subclass final class $Proxy0". But this feature is usually not needed anyway. 

    • Since two objects are created (the instance of the class and the proxy as instance of a sub class) the constructor is called twice. In general this should not matter. I consider changing the class' state based on constructor calls a code smell anyway.

    • You have CGLib as additional dependency.

      ref:  http://static.springsource.org/spring/docs/3.1.1.RELEASE/spring-framework-reference/htmlsingle/spring-framework-reference.html#aop-introduction-proxies 


    posted on 2012-05-03 13:16 gembin 閱讀(1343) 評論(0)  編輯  收藏 所屬分類: Spring


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    常用鏈接

    留言簿(6)

    隨筆分類(440)

    隨筆檔案(378)

    文章檔案(6)

    新聞檔案(1)

    相冊

    收藏夾(9)

    Adobe

    Android

    AS3

    Blog-Links

    Build

    Design Pattern

    Eclipse

    Favorite Links

    Flickr

    Game Dev

    HBase

    Identity Management

    IT resources

    JEE

    Language

    OpenID

    OSGi

    SOA

    Version Control

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    free counters
    主站蜘蛛池模板: 女性自慰aⅴ片高清免费| 最新黄色免费网站| 一级女性全黄生活片免费看| 女bbbbxxxx另类亚洲| 手机看片国产免费永久| 国产精品成人免费福利| 亚洲日韩中文在线精品第一| 亚洲精品成人av在线| 美女黄色免费网站| 中文字幕视频免费| 亚洲一本大道无码av天堂| 一级毛片试看60分钟免费播放| 亚洲欧洲国产成人综合在线观看 | 亚洲专区中文字幕| 男男gay做爽爽免费视频| 成人免费在线看片| 亚洲中文字幕无码久久| 七色永久性tv网站免费看| 色播在线永久免费视频| 亚洲精品视频在线观看视频| 中美日韩在线网免费毛片视频| 国产亚洲一区区二区在线| 亚洲av无一区二区三区| 69av免费视频| 亚洲免费视频在线观看| 99在线视频免费观看视频| 亚洲va久久久噜噜噜久久| 一区二区三区免费在线视频| 四虎永久免费地址在线网站 | 亚洲成色www久久网站夜月| 九九九国产精品成人免费视频| 国产亚洲真人做受在线观看| 曰批免费视频播放免费| 国产伦一区二区三区免费| 中文字幕高清免费不卡视频| 亚洲爽爽一区二区三区| 182tv免费观看在线视频| 国产偷国产偷亚洲高清在线| 亚洲人成依人成综合网| 在线看片无码永久免费aⅴ| 蜜桃传媒一区二区亚洲AV|