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

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

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

    goldrain

    金色雨點(diǎn)

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      37 隨筆 :: 2 文章 :: 239 評(píng)論 :: 0 Trackbacks
    Spring依賴(lài)其IOC特征,輕松的管理著一堆非常有價(jià)值的bean,這些bean在spring容器中的依賴(lài)關(guān)系都已注入好,所以相互調(diào)用非常方便。

    但既然是有價(jià)值的bean,我們就想在Java代碼的各處都能調(diào)用,實(shí)際中的確有這樣的場(chǎng)景,比如:
    struts的action要用其中的service;
    充血領(lǐng)域模型的hibernate實(shí)體會(huì)需要dao。

    要調(diào)用這些bean,現(xiàn)在也確實(shí)有很多做法:
    以下代碼描述的方式,被稱(chēng)為bad smell,是最不自然的方式,不被提倡;

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


    自然的調(diào)用方式是,你調(diào)用的bean,也是注入的:
    struts2是通過(guò)一個(gè)spring plugin來(lái)做到的;
    hibernate就沒(méi)那么簡(jiǎn)單了,要用到annotation聲明,要什么AspectJ織入,概念復(fù)雜,麻煩之極;

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

    Java:
    public class JdbcDao {


        
    //靜態(tài)變量
        private static JdbcDao instance;

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

        
    //對(duì)象方法,注入到靜態(tài)變量
        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容器啟動(dòng),構(gòu)造好bean后,就會(huì)自行將其注入到靜態(tài)變量,然后在各處的調(diào)用就很簡(jiǎn)單了:
        public class UserAction {
           JdbcDao jdbcDao 
    = JdbcDao.get();

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

           ...

        }


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

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

    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 一个人免费播放在线视频看片 | 国产大片免费观看中文字幕| 免费人成激情视频| 香蕉成人免费看片视频app下载| 国产精品久久亚洲一区二区| 亚洲狠狠ady亚洲精品大秀| 色久悠悠婷婷综合在线亚洲| 国产精品成人四虎免费视频| 亚洲高清中文字幕免费| 国产成人精品无码免费看| 免费人成视频在线观看免费| 亚洲精品无码aⅴ中文字幕蜜桃| 亚洲美女人黄网成人女| 亚洲AV永久无码精品一百度影院| 亚洲国产精品碰碰| 国产大片91精品免费观看男同| 久久天天躁狠狠躁夜夜免费观看 | 亚洲成色WWW久久网站| 亚洲国产综合精品中文字幕 | 亚洲国产欧美国产综合一区| 亚洲sss综合天堂久久久| 亚洲国产美女福利直播秀一区二区| 亚洲天天做日日做天天看| 亚洲va无码va在线va天堂| 国产亚洲精品无码成人| 亚洲日本乱码在线观看| 国产亚洲精品无码专区| 国产亚洲精品AA片在线观看不加载| 亚洲国产人成精品| 亚洲熟女乱综合一区二区| 亚洲精品无码成人片在线观看 | 亚洲爆乳精品无码一区二区| 亚洲一卡2卡3卡4卡5卡6卡| 亚洲综合av一区二区三区不卡 | 久久99青青精品免费观看| 无码人妻久久一区二区三区免费| 久久久精品免费视频| 久久精品免费电影| 最新黄色免费网站| 成年性午夜免费视频网站不卡| 免费高清小黄站在线观看 |