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

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

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

    goldrain

    金色雨點

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      37 隨筆 :: 2 文章 :: 239 評論 :: 0 Trackbacks
    Spring依賴其IOC特征,輕松的管理著一堆非常有價值的bean,這些bean在spring容器中的依賴關系都已注入好,所以相互調用非常方便。

    但既然是有價值的bean,我們就想在Java代碼的各處都能調用,實際中的確有這樣的場景,比如:
    struts的action要用其中的service;
    充血領域模型的hibernate實體會需要dao。

    要調用這些bean,現在也確實有很多做法:
    以下代碼描述的方式,被稱為bad smell,是最不自然的方式,不被提倡;

    JdbcDao jdbcDao = (JdbcDao)springContext.getBean("jdbcDao");


    自然的調用方式是,你調用的bean,也是注入的:
    struts2是通過一個spring plugin來做到的;
    hibernate就沒那么簡單了,要用到annotation聲明,要什么AspectJ織入,概念復雜,麻煩之極;

    我有一個簡單的做法,至少對單件的bean很可行(一般我們需要的bean也就是單件的)。思路很簡單,依靠spring的注入機制,把容器內的bean注入為靜態變量。而靜態變量天然就是各處可用的。以下是代碼:

    Java:
    public class JdbcDao {


        
    //靜態變量
        private static JdbcDao instance;

        
    //靜態方法,獲取單件對象
        public static JdbcDao get(){
            
    return instance;
        }

        
    //對象方法,注入到靜態變量
        public void setInstance(JdbcDao _inst){
          instance 
    = _inst;
        }

        public List query(String sql){
           ....
        }



    }

    spring配置,將自身注入:
        <bean id="jdbcDao" class="net.jacker.dao.JdbcDao">

            
    <property name="instance">
                
    <ref bean="jdbcDao" />
            
    </property>

        
    </bean>


    這樣,只要spring容器啟動,構造好bean后,就會自行將其注入到靜態變量,然后在各處的調用就很簡單了:
        public class UserAction {
           JdbcDao jdbcDao 
    = JdbcDao.get();

           
    public String execute(){
               jdbcDao.query();
           }

           ...

        }


    注:網上有一些思路也是從靜態變量入手的,但做法有所不同,有的需要依賴web容器,就不多做介紹了。

    最后要說的就是,這也是單件模式的一種實現,使用spring容器配置注入好你的單件對象,并在任何地方使用之。
    posted on 2009-04-02 12:04 goldrain 閱讀(1575) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 国产成人综合亚洲一区| 亚洲熟女少妇一区二区| 亚洲毛片无码专区亚洲乱| 国产成人A在线观看视频免费| 高h视频在线免费观看| 毛片a级毛片免费观看免下载 | 免费看男人j放进女人j免费看| 无码成A毛片免费| 亚洲综合一区二区精品久久| 99久9在线|免费| 亚洲区精品久久一区二区三区| 精品国产亚洲一区二区三区在线观看| 黄色网址在线免费观看| 日韩免费一区二区三区| 深夜a级毛片免费视频| 亚洲中文字幕第一页在线| 鲁丝片一区二区三区免费| 亚洲AV无码不卡无码| 91高清免费国产自产| 2020国产精品亚洲综合网| 成人黄18免费视频| 国产成人亚洲精品蜜芽影院| 国内精品99亚洲免费高清| 国产成人久久AV免费| 亚洲一区二区三区亚瑟| 国产成人无码a区在线观看视频免费| 欧洲精品成人免费视频在线观看 | 亚洲日韩av无码| 中文字幕免费在线看| 亚洲国产精品久久| 成人AV免费网址在线观看| 亚洲AV日韩AV天堂久久| 精品国产免费人成电影在线观看| 亚洲中文字幕无码久久综合网| 日韩精品无码一区二区三区免费 | 91精品国产亚洲爽啪在线影院| 全部在线播放免费毛片| 亚洲成熟xxxxx电影| 国产99视频精品免费观看7| 黄网站色成年片大免费高清 | 成人性做爰aaa片免费看|