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

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

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

    常言笑的家

    Spring, Hibernate, Struts, Ajax, RoR

    如何去除Spring中的面向接口的編成

        眾所周知,Spring是提倡基于接口編程的。
        但有些Manager類,比如SaleOrderManager ,只有5%的機會再有另一個Impl實現。95%時間里這兩兄弟站一起,就像C++里的.h和.cpp,徒增維護的繁瑣(經常要同步兩個文件的函數聲明),和代碼瀏覽跳轉時的不便(比如從Controler類跟蹤到Service類時,只能跳轉到接口類的相應函數,還要再按一次復雜的熱鍵才跳轉到實現類)
        連Martin Flower都說,強制每個類都分離接口和實現是過猶不及。只在有多個獨立實現,或者需要消除對實現類的依賴時,才需要分離接口。

        DAO被強制用接口的原因
        Spring IOC本身是不會強制基于接口的,但DAO類一般要使用Spring的聲明式事務機制,而聲明式的事務機制是使用Spring AOP來實現的。Spring AOP的實現機制包括動態代理和Cgilib2,其中Spring AOP默認使用的Java動態代理是必須基于接口,所以就要求基于接口了。
        
        解決方法
        那就讓Spring AOP改用CGLib2,生成目標類的子類吧,我們只要指定使用聲明式事務的FactoryBean使用CGLib的方式來實現AOP,就可以不基于接口編程了。
        指定的方式為設置proxyTargetClass為true。如下:
    <bean class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
    id
    ="baseService"   abstract="true">
      
    <property name="transactionManager" ref="transactionManager"/>
      
    <property name="proxyTargetClass" value="true"/>

    </bean>

         又因為這些Service Bean都是單例,效率應該不受影響。

    posted on 2006-12-19 13:05 常言笑 閱讀(550) 評論(0)  編輯  收藏 所屬分類: JAVA/J2EE

    My Links

    Blog Stats

    常用鏈接

    留言簿(5)

    隨筆分類

    隨筆檔案

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久久久亚洲av成人无码电影| 国产在线a不卡免费视频| 亚洲精品乱码久久久久久久久久久久| 特级毛片免费播放| 亚洲成综合人影院在院播放| 台湾一级毛片永久免费| 久久久久久久久久久免费精品| 日韩高清在线高清免费| 五月婷婷免费视频| 亚洲一区二区影视| 国产精品亚洲аv无码播放| 久久免费看黄a级毛片| 国产精品内射视频免费| eeuss影院www天堂免费| 亚洲欧洲国产成人精品| 在线观看免费人成视频色9| 91九色视频无限观看免费| 亚洲av无码偷拍在线观看| 久久亚洲sm情趣捆绑调教 | 午夜亚洲AV日韩AV无码大全| 精品免费人成视频app| 久久免费看少妇高潮V片特黄| 精品亚洲国产成人av| WWW亚洲色大成网络.COM| 亚洲砖码砖专无区2023| 亚洲国产精品成人精品小说| 久久综合九九亚洲一区| 亚洲自偷自拍另类图片二区| 西西人体44rt高清亚洲| 免费一级做a爰片久久毛片潮喷| 人碰人碰人成人免费视频| 中文字幕在线免费观看视频| 日韩精品免费一线在线观看| 亚洲乱码av中文一区二区| 国产精品亚洲片在线va| 456亚洲人成在线播放网站| 国产精品亚洲片在线花蝴蝶| 亚洲精品无AMM毛片| 香蕉视频亚洲一级| 2021精品国产品免费观看| 四虎成人免费观看在线网址|