<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)

    隨筆分類

    隨筆檔案

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 成全高清视频免费观看| 无人在线观看免费高清| 亚洲日韩精品国产3区| 亚洲成a人无码亚洲成av无码| 无码人妻一区二区三区免费视频 | a在线免费观看视频| 四虎影视在线影院在线观看免费视频| 亚洲人成亚洲人成在线观看| 亚洲欧洲日产国产综合网| 久久综合久久综合亚洲| 一道本在线免费视频| 131美女爱做免费毛片| 亚洲 综合 国产 欧洲 丝袜| 亚洲成a人片在线观看日本| 亚洲av无码不卡久久| 成人免费网站久久久| 亚洲日产韩国一二三四区| 国产在线国偷精品免费看| 99久热只有精品视频免费看| 国产av无码专区亚洲国产精品| 91亚洲视频在线观看| 日韩电影免费观看| 久久影院亚洲一区| 黄页网站在线免费观看| 丁香花免费完整高清观看| 亚洲av最新在线网址| 亚洲免费日韩无码系列| 性感美女视频在线观看免费精品| 国产亚洲av片在线观看16女人| 免费的黄色的网站| 国产一级做a爱免费视频| 亚洲午夜精品一区二区公牛电影院| 老司机永久免费网站在线观看| 亚洲国产二区三区久久| 97无码免费人妻超级碰碰碰碰| 亚洲av无码电影网| 亚洲国产V高清在线观看| 四虎国产精品成人免费久久| 亚洲AV成人片色在线观看高潮| a级片免费观看视频| 日本亚洲精品色婷婷在线影院|