<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
    主站蜘蛛池模板: 国产午夜亚洲精品不卡电影| 亚洲av日韩专区在线观看| 亚美影视免费在线观看| 免费A级毛片在线播放不收费| 国产精品亚洲AV三区| 成年女人午夜毛片免费看| 亚洲男人天堂2018av| 在线观看无码的免费网站| 国产亚洲中文日本不卡二区 | 亚洲宅男精品一区在线观看| 最近中文字幕大全免费视频| 一级做a爱片特黄在线观看免费看 一级做a爱过程免费视 | 亚洲视频日韩视频| 日本片免费观看一区二区| 亚洲制服丝袜在线播放| 国产精品怡红院永久免费| 亚洲中文字幕久久久一区| 4虎1515hh永久免费| 免费很黄无遮挡的视频毛片| 337p日本欧洲亚洲大胆精品555588| 国产v片免费播放| 国产精品成人观看视频免费| 又长又大又粗又硬3p免费视频| 亚洲中文久久精品无码1| 久久影视综合亚洲| 国内自产拍自a免费毛片| 少妇太爽了在线观看免费视频| 免费精品国产自产拍在线观看| 亚洲一区精品视频在线| 久久综合图区亚洲综合图区| 四虎永久免费影院在线| 日本一区二区三区免费高清| 在线观看免费无码专区| 全黄A免费一级毛片| 亚洲人成网站免费播放| 亚洲自偷精品视频自拍| 精品久久久久久亚洲| 亚洲 另类 无码 在线| 女性无套免费网站在线看| xxxx日本免费| 日韩在线永久免费播放|