IOC容器簡介
我們經常說Spring是一個IOC容器,Spring中這么多代碼,那么到底哪些類是IOC容器的主要表現形式呢?其實在Spring中IOC容器的主要表現形式是BeanFactory和ApplicationContext這兩個介面,這兩個介面的具體實作類就可以看成是IOC容器在Spring中的具體體現,
BeanFactory提供了最基本的IOC和依賴注入功能,ApplicationContext繼承了BeanFactory,在BeanFactory的基礎上添加了很多新功能,主要包括國際化、事件分發機制(ApplicationEvent)、資源訪問(Resource)等功能,在實際的開發程序中,一般都會選擇ApplicationContext系列的容器實作,下面列舉下BeanFactory和ApplicationContext系列容器的常見實作類,

上圖是BeanFactory系列容器的繼承圖,需要重點關注的是DefaultListableBeanFactory,這個類是Spring默認使用基礎容器類,在每個ApplicationContext容器中都使用這個基礎容器,
上圖是ApplicationContext系列的容器實作,常用的有ClasspathXmlApplicationContext和XmlWebApplicationContext,Spring Boot還推出WebServerApplicationContext系列容器,從名字可以看出這個系列的容器是支持內嵌Web Server功能的,但是由于本博客介紹的是基礎Spring FrameWork功能,就沒列舉WebServer系列容器,感興趣的可以自己去看下Spring Boot的相關內容,
使用IOC容器
初始化容器的代碼
//ClassPathXmlApplicationContext支持多次refresh容器
ApplicationContext context = new ClassPathXmlApplicationContext("services.xml","daos.xml");
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:/config/services.xml");
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:/${placeHolder}/services.xml");
//使用groovy形式
ApplicationContext context = new GenericGroovyApplicationContext("services.groovy", "daos.groovy");
//先new再refresh()
//不支持重復refresh
GenericApplicationContext context = new GenericApplicationContext();
new XmlBeanDefinitionReader(context).loadBeanDefinitions("services.xml", "daos.xml");
context.refresh();
ClassPathXmlApplicationContext支持classpath:/${placeHolder}/services.xml這種以classpath打頭的入參
有時Spring的配置會比較多,如果將所有的配置都放在一個檔案中會顯得比較亂,這時我們可以將同類別的配置放在一個組態檔中,然后再用impoer匯入到一個檔案中即可.
<beans>
<import resource="services.xml"/>
<import resource="resources/messageSource.xml"/>
<import resource="/resources/themeSource.xml"/>
<bean id="bean1" />
<bean id="bean2" />
</beans>
配置形式
Spring支持多種形式的配置:傳統的xml形式,注解形式和Java code形式,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/165916.html
標籤:Java
下一篇:Java--Junit單元測驗
