<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 閱讀(1344) 評論(0)  編輯  收藏 所屬分類: Spring


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


    網(wǎng)站導(dǎo)航:
     

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(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级毛片免费播放| 免费人成再在线观看网站| 久久精品国产亚洲精品2020| 亚洲乱码中文字幕久久孕妇黑人| 免费欧洲美女牲交视频| 日本免费福利视频| 在线观看91精品国产不卡免费| 成人毛片免费播放| 国产网站免费观看| 国产一区二区三区免费视频| 亚洲av无码不卡私人影院| 又粗又大又猛又爽免费视频 | 日韩欧美一区二区三区免费观看 | 久久久久久久99精品免费| 亚洲AV无码一区二区三区鸳鸯影院| 亚洲av无码片在线观看| 亚洲性天天干天天摸| 亚洲国产精品一区二区久久hs | 免费成人在线电影| 国产精成人品日日拍夜夜免费| 久久久精品国产亚洲成人满18免费网站 | 亚洲人成电影青青在线播放| 亚洲国产综合自在线另类| 国产亚洲精品自在久久| 亚洲色偷偷狠狠综合网| 久久精品国产精品亚洲| 日本亚洲国产一区二区三区| 久久精品国产精品亚洲| 亚洲av无码片在线播放| 亚洲日本中文字幕区| 亚洲精品视频观看| 在线综合亚洲中文精品| 亚洲人成人伊人成综合网无码| 亚洲妇女无套内射精| 国产成人亚洲精品电影| 一道本在线免费视频| 精品一区二区三区免费| 1000部无遮挡拍拍拍免费视频观看| 国产成人精品免费视频大| 成人au免费视频影院| 亚洲av日韩av欧v在线天堂|