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

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

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

    MicroFish

    Open & Open hits
    隨筆 - 33, 文章 - 2, 評論 - 4, 引用 - 0
    數據加載中……

    《Pro Spring》學習筆記(3)--Spring中的IOC

    ?

    ??????控制反轉包括兩種類型:依賴查找(Dependency Lookup)和依賴注入(Dependency Injection),我們主要討論的是依賴注入。
    ????? 依賴注入可以分為兩種類型:構造子注入(Constructor Dependency Injection)和設值注入(Setter Dependency Injection)
    ????? 構造子注入,組件的依賴關系是通過構造函數來提供的,每個依賴關系對應構造函數的各個參數,IOC容器在實例化組件時,通過構造函數注入依賴關系。
    public class ConstructorInjection {
    ??? private Dependency dep;
    ??? public ConstructorInjection(Dependency dep) {
    ??????? this.dep = dep;
    ??? }
    }
    構造子注入適用于在使用某個組件之前,確保所有的依賴關系都已注入。
    ????? 設值注入,組件的依賴關系是通過JavaBean形式的setter方法注入的,IOC容器通過調用相應的set方法注入依賴關系。
    public class SetterInjection {
    ??? private Dependency dep;
    ??? public void setMyDependency(Dependency dep) {
    ??????? this.dep = dep;
    ??? }
    }
    設值注入適用于需要給某些依賴關系提供默認值的情況。
    ????? Spring IOC容器的核心是BeanFactory,BeanFactory負責管理組件以及組件間的依賴關系。術語bean在Spring中代表由容器管理的任何組件。Spring提供了兩種常用的BeanFactory實現:DefaultListableBeanFactory和XmlBeanFactory。
    ????? 在BeanFactory中,每個bean都至少有一個名稱,作為唯一標識,如果bean擁有多個名稱的話,那么除第一個名稱外的其它名稱都將被認為是別名。
    ????? DefaultListableBeanFactory可以使用PropertiesBeanDefinitionReader或者XmlBeanDefinitionReader(當然還可以是其它任何實現了BeanDefinitionReader接口的Bean定義讀取器)來讀取配置文件。
    //使用PropertiesBeanDefinitionReader
    private static BeanFactory getBeanFactory() throws Exception {
    ??? // get the bean factory
    ??? DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
    ??? // create a definition reader
    ??? PropertiesBeanDefinitionReader rdr = new PropertiesBeanDefinitionReader(factory);
    ??? // load the configuration options
    ???
    Properties props = new Properties();
    ??? props.load(new FileInputStream("./ch2/src/conf/beans.properties"));
    ??? rdr.registerBeanDefinitions(props);
    ??? return factory;
    }
    //使用XmlBeanDefinitionReader
    private static BeanFactory getBeanFactory() throws Exception {
    ??? // get the bean factory
    ??? DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
    ??? // create a definition reader
    ??? XmlBeanDefinitionReader rdr = new XmlBeanDefinitionReader(factory);
    ??? // load the configuration options
    ??? rdr.loadBeanDefinitions(new FileSystemResource("ch4/src/conf/beans.xml"));
    ????return factory;
    }
    ????? XmlBeanFactory繼承了DefaultListableBeanFactory,在使用XML配置文件時可以簡化代碼的編寫,這也是我們最常用的BeanFactory。
    private static BeanFactory getBeanFactory() throws Exception {
    ??? XmlBeanFactory factory =
    ??????? new XmlBeanFactory(new FileSystemResource("ch4/src/conf/beans.xml"));
    ????return factory;
    }
    ????? 獲得了BeanFactory對象后,我們就可以使用bean的名稱來獲取我們需要的組件對象了。
    Oracle oracle = (Oracle)factoyr.get("oracle");

    posted on 2006-12-21 10:20 劉璐 閱讀(315) 評論(0)  編輯  收藏 所屬分類: spring

    主站蜘蛛池模板: 久久国产精品一区免费下载| 亚洲日韩在线观看| 国色精品va在线观看免费视频 | 日韩在线视频播放免费视频完整版| 亚洲国产成人久久综合碰碰动漫3d | 国产在线98福利播放视频免费| 最近的中文字幕大全免费8 | 亚洲午夜久久久久久久久久| 精品国产免费一区二区| 免费成人激情视频| 99国产精品视频免费观看| 东方aⅴ免费观看久久av| 成人嫩草影院免费观看| 毛片亚洲AV无码精品国产午夜| 国产亚洲sss在线播放| 亚洲视频一区网站| 亚洲国产精品久久久久婷婷软件| 久久亚洲精品无码观看不卡| 免费人成视频x8x8入口| 国产高清在线精品免费软件| 午夜视频免费观看| 最近中文字幕免费mv视频8| 最近免费mv在线电影| 鲁大师在线影院免费观看| 久久久久久影院久久久久免费精品国产小说 | 相泽南亚洲一区二区在线播放| 亚洲中文无码永久免| 亚洲av一本岛在线播放| 亚洲人成网站日本片| 亚洲精品人成电影网| 亚洲黄色片在线观看| 久久亚洲sm情趣捆绑调教| 亚洲精品国产手机| 亚洲av无码不卡久久| 亚洲乱码一区二区三区国产精品| 亚洲kkk4444在线观看| 亚洲色欲色欲www在线播放| 亚洲日韩国产AV无码无码精品| 亚洲国产精品无码中文lv| 亚洲国产精品久久久久秋霞小| 午夜亚洲国产理论片二级港台二级 |