一??.? 對于Spring的容器管理,首先得知道什么是容器管理.
??????????java是一門面向對象的語言,在代碼里,粗略的講一個對象的體現就是一個類(class)的實例.也可以說就是一個JavaBean.在一個實際工程中,像這樣的對象或實例會存在很多,并且每個對象的狀態,作用范圍,以及它們之間的關系(在Spring中為依賴)是很復雜的,所以要管理它們也是很大的開銷.而在spring中,對與它們的管理就是容器管理.你可以看作容器就是這些bean的集合. 管理的方面主要有bean的創建,周期(作用域)和初始屬性(注入),以及bean之間相互依賴的關系等.用比較專業的話就是------管理對象對其進行實例化、配置以及組裝.
??????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? Spring IoC 容器
二 .??容器的運作.
??????????????????在Spring包的有兩個很重要的東西,org.springframework.beans及org.springframework.context包,這兩個包是IOC的基礎包,自然也是運行IOC容器的關鍵.而其中關鍵的關鍵就是分別在兩個包里的BeanFactory和ApplicationContext,其中BeanFactory提供了配制框架及基本功能,??而
ApplicationContext則是它的擴展,這個擴展是針對企業級別的,當中加入很多了企業級的支持,功能得到了進一步增強,比如更易與Spring AOP集成、消息資源處理(國際化處理)、事件傳遞及各種不同應用層的context實現(如針對web應用的WebApplicartionContext).
????1 .?實例化容器:
???????在項目工程中用于實例化容器的類一般都是ApplicationContext以及他的擴展WebApplicationContext,當然BeanFactory也能用.
?????? 在代碼中一般是:
//1.
?Resource?resource?=?new?FileSystemResource("beans.xml");BeanFactory?factory?=?new?XmlBeanFactory(resource);
//2.
ClassPathResource?resource?=?new?ClassPathResource("beans.xml");
BeanFactory?factory?=?new?XmlBeanFactory(resource);
//3.
ApplicationContext?context?=?new?ClassPathXmlApplicationContext(
????????new?String[]{"applicationContext.xml",?"applicationContext-part2.xml"});
//?of?course,?an?ApplicationContext?is?just?a?BeanFactory
BeanFactory?factory?=?(BeanFactory)?context;??
//4.???????????????????ApplicationContext context?= new FileSystemXmlApplicationContext("src\\beans.xml");
?????????????實際的項目中,上述的實例化方法一般都是用于非Web工程(c/s)或者測試代碼中而在web工程內一般用的是ApplicationContext,實例化它只是在web配置文件(web.xml)里寫入配置信息:?
???????????????

<context-param>


</context-param>

??? <!--?????????下面的listener 和 servlet 是兩個相同效果的配置?,只能選其一,只是listener 不能在與Servlet 2.2兼容的web容器中使用,
????????????????? 但在都可用的情況下,官方推崇首選?listener??? -->
<listener>

</listener>

<!--?or?use?the?ContextLoaderServlet?instead?of?the?above?listener???? -->
<servlet>



</servlet>

?????????2.?容器的使用:
????????????一般這是在代碼級創建了IOC容器后(就是上述的(1)),或者是獲得了容器的"引用"后用(這里其實是beanFactory和ApplicationContext的實現類的引用 如:);



???
- boolean containsBean(String) :如果BeanFactory包含給定名稱的bean定義(或bean實例),則返回true
- Object getBean(String) :返回以給定名字注冊的bean實例。根據bean的配置情況,如果為singleton模式將返回一個共享的實例,否則將返回一個新建的實例。如果沒有找到指定的bean,該方法可能會拋出BeansException異常(實際上將拋出NoSuchBeanDefinitionException異常),在對bean進行實例化和預處理時也可能拋出異常
- Object getBean(String, Class) :返回以給定名稱注冊的bean實例,并轉換為給定class類型的實例,如果轉換失敗,相應的異常(BeanNotOfRequiredTypeException)將被拋出。上面的getBean(String)方法也適用該規則。
- Class getType(String name) :返回給定名稱的bean的Class。如果沒有找到指定的bean實例,則拋出NoSuchBeanDefinitionException異常。
- boolean isSingleton(String) :判斷給定名稱的bean定義(或bean實例)是否為singleton模式,如果bean沒找到,則拋出NoSuchBeanDefinitionException異常。
- String[] getAliases(String) :返回給定bean名稱的所有別名。
???? 上面六點,都是在BeanFactory中的基本和一些簡單的用法,但在將其擴展后了的ApplicationContext中加入了企業級的功能,比如國際化,資源訪問等,這些我將在學習Spring
????? XML格式的元數據配置中學習.
??? 三? .? 配置元數據
???????????我自己的理解: 配置元數據的作用就是Spring管理Bean對象關系和資源文件的"規章制度",它是告訴IOC容器如何去組織對象和對象之間的關系是怎樣的.
?????????? 目前,Spring支持三種配置元數據格式:XML格式、Java屬性文件格式或使用Spring公共API編程實現。很顯然,XML是現在最方便和容易編寫的配置元數據.
????????在Spring的XMl配置元數據格式為:
??????????












????????????? 到此,理解了什么是Spring,以及它在工程中的基本框架,下面著重學習的就是它的依賴注入和AOP技術的運用,學習是如何在XML元數據中進行配置.