<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依賴其IOC特征,輕松的管理著一堆非常有價(jià)值的bean,這些bean在spring容器中的依賴關(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í)有很多做法:
    以下代碼描述的方式,被稱為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)變量入手的,但做法有所不同,有的需要依賴web容器,就不多做介紹了。

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

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲男人天堂影院| 在线观看免费av网站| 亚洲一区二区三区高清不卡| 亚洲人成无码网站久久99热国产| 久久久久久精品免费看SSS| 一级人做人爰a全过程免费视频| 亚洲无吗在线视频| 香蕉蕉亚亚洲aav综合| 亚洲国产成人精品女人久久久 | 久久亚洲精品无码播放| 久久久www成人免费毛片| 日本免费大黄在线观看| 国产福利在线观看永久免费| 亚洲av综合av一区二区三区| 性xxxx视频免费播放直播| 美女视频黄视大全视频免费的| 亚洲资源最新版在线观看| 亚洲视频在线观看视频| 亚洲AV永久无码精品水牛影视| 亚洲最大av无码网址| 免费日本黄色网址| 成人一a毛片免费视频| 免费观看无遮挡www的小视频| 久久久久国色av免费看| 国产午夜成人免费看片无遮挡| 一个人免费观看日本www视频| 猫咪免费人成在线网站| 在线91精品亚洲网站精品成人| 亚洲国产成人久久精品大牛影视| 亚洲乱码中文论理电影| 亚洲人成人77777在线播放| 亚洲的天堂av无码| 亚洲人成电影在线观看网| 亚洲的天堂av无码| 亚洲人成网站看在线播放| 亚洲xxxxxx| 亚洲中文无码永久免费| 亚洲欧美日韩久久精品| 无码天堂亚洲国产AV| 免费国产在线精品一区| 一级做a爰片久久免费|