Container概覽
ApplicationContext介面代表了Spring IoC container以及負責初始化,配置,組合beans,這些是根據讀取組態檔(XML或者Java注解或者Java代碼,你需要在組態檔中表述構建應用所需要的物件那個,以及它們之間的依賴)進行的,
Spring提供了ApplicationContext介面的幾個實作,在一個獨立運行的應用中,通常使用ClassPathXmlApplicationContext或者FileSystemXmlApplicationContext,XML是定義組態檔的傳統格式,不過可以提供一點XML注解來的宣告性地啟用對其它配置格式的支持,
在大多數的應用場景下,用戶不需要使用代碼去顯示地初始化一個或更多的Spring IoC container,例如一個web 應用的場景,web.xml即可,或者使用Spring Boot不需要手動配置,只需要使用生成的Main方法中的SpringApplication.run(),

組態檔
對于XML配置的檔案,需要在頂層元素<beans>中定義</bean>元素,而在Java的配置方式中,需要在注解為@Configuration的類中定義注解為@Bean的方法,一個bean至少需要一個Class資訊,
初始化一個Container
有一些實作了ApplicationContext的類與資源的路徑相關比如ClassPathXmlApplicationContext,會在classpath中讀取給定的組態檔從而實體化,
ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");
除了直接在實體化的時候提供檔案資訊,也可以在xml的組態檔的頂層元素<Beans>下使用< import resourse = "filename">來使一個組態檔包含另一個組態檔,當這個組態檔被加載時,其包含的組態檔也被加載,</import>這個指令時命名空間自身提供的,其他的命名空間會有其他的指令,
使用url來定位組態檔時,不建議使用絕對路徑或者使用../跳轉到上級路徑,作為替代可以使用&{pathToBeParsed}占位符,
使用Container
ApplicationContext是一個擁有一個bean和其依賴的注冊機的高級工廠類的介面,使用T getBean(String name, Class
ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");
PetStoreService service = context.getBean("petStore", PetStoreService.class);
這些實作中最具彈性的變體是GenericApplicationContext,這個實作可以將其他Reader類實體作為代理來組合,例如:
GenericApplicationContext context = new GenericApplicationContext();
new XmlBeanDefinitionReader(context).loadBeanDefinitions("services.xml", "daos.xml");
context.refresh();
注意:在實體化XmlBeanDefinitionReader時使用了context作為構造引數,使其稱為context的一個代理,然后在呼叫了它的加載組態檔的方法,
實際上,你并不需要呼叫這個getBean方法,從而與Spring架構解耦合,而依賴的注入將由Spring自動進行,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/285556.html
標籤:Java
