Spring容器基本使用及原理

IOC容器

IOC容器是具有依賴注入功能的容器,負責對象的實例化、對象的初始化,對象和對象之間依賴關係配置、對象的銷燬、對外提供對象的查找等操作,對象的整個生命週期都是由容器來控制。我們需要使用的對象都由ioc容器進行管理,不需要我們再去手動通過new的方式去創建對象,由ioc容器直接幫我們組裝好,當我們需要使用的時候直接從ioc容器中直接獲取就可以了。

那麼spring ioc容器是如何知道需要管理哪些對象呢?
配置支持xml格式和java註解的方式,在配置文件中列出需要讓ioc容器管理的對象,以及可以指定讓ioc容器如何構建這些對象,當spring容器啓動的時候,就會去加載這個配置文件,然後將這些對象給組裝好以供外部訪問者使用。
所以IOC容器也叫spring容器

Bean概念

spring容器管理的對象統稱爲Bean對象。Bean就是普通的java對象,和我們自己new的對象其實是一樣的,只是這些對象是由spring去創建和管理的,我們需要在配置文件中告訴spring容器需要創建哪些bean對象,所以需要先在配置文件中定義好需要創建的bean對象,這些配置統稱爲bean定義配置元數據信息,spring容器通過讀取這些bean配置元數據信息來構建和組裝我們需要的對象

Spring容器對象

spring內部提供了很多表示spring容器的接口和對象,我們來看看比較常見的幾個容器接口和具體的實現類。

BeanFactory接口

org.springframework.beans.factory.BeanFactory

spring容器中具有代表性的容器就是BeanFactory接口,這個是spring容器的頂層接口,提供了容器最基本的功能。

幾個常用的方法

//按bean的id或者別名查找容器中的bean
Object getBean(String name) throws BeansException
 
//這個是一個泛型方法,按照bean的id或者別名查找指定類型的bean,返回指定類型的bean對象
<T> T getBean(String name, Class<T> requiredType) throws BeansException;
 
//返回容器中指定類型的bean對象
<T> T getBean(Class<T> requiredType) throws BeansException;
 
//獲取指定類型bean對象的獲取器,這個方法比較特別,以後會專門來講
<T> ObjectProvider<T> getBeanProvider(Class<T> requiredType);

ApplicationContext接口

這個接口繼承了BeanFactory接口,所以內部包含了BeanFactory所有的功能,並且在其上進行了擴展,增加了很多企業級功能,比如AOP、國際化、事件支持等等。

ClassPathXmlApplicationContext類

這個類實現了ApplicationContext接口,注意一下這個類名稱包含了ClassPath Xml,說明這個容器類可以從classpath中加載bean xml配置文件,然後創建xml中配置的bean對象,一會後面的案例就會用到這個類。

AnnotationConfigApplicationContext類

這個類也實現了ApplicationContext接口,當我們使用註解的方式定義bean的時候,就需要用到這個容器來裝載了,這個容器內部會解析註解來構建構建和管理需要的bean。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章