<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)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 免费人妻无码不卡中文字幕18禁| 亚洲国产成人久久精品动漫 | 日本zzzzwww大片免费| 日本视频一区在线观看免费| 国产成人在线免费观看| 亚洲国产成人精品无码区花野真一| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 夜夜嘿视频免费看| 亚洲人成77777在线观看网| 羞羞视频网站免费入口| 免费成人午夜视频| 色哟哟国产精品免费观看| 精品福利一区二区三区免费视频 | 成全高清视频免费观看| 亚洲中文无码卡通动漫野外| 午夜一区二区免费视频| 国产91成人精品亚洲精品| 久久www免费人成看片| 国产中文在线亚洲精品官网| 一个人免费视频观看在线www| 毛片a级毛片免费播放下载 | 亚洲va精品中文字幕| 久久久受www免费人成| 亚洲国产精品成人精品无码区 | 亚洲色大成网站www永久一区| 狠狠色伊人亚洲综合网站色| 99re视频精品全部免费| 亚洲一区在线观看视频| 国产伦一区二区三区免费| 亚洲国产熟亚洲女视频| 国产性生交xxxxx免费| 亚洲av无码一区二区三区观看| 成人片黄网站色大片免费观看APP| 国产一级淫片a免费播放口之| 亚洲一线产区二线产区精华| 免费被黄网站在观看| 一本一道dvd在线观看免费视频| 国产成人在线观看免费网站| 999zyz**站免费毛片| 久久久受www免费人成| 亚洲欧洲日韩在线电影|