您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Spring中IOC容器的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
Spring的IOC的過程也被稱為依賴注入(DI),那么對象可以通過構造函數參數,工廠方法的參數或在工廠方法構造或返回的對象實例上設置的屬性來定義它們的依賴關系,然后容器 在創建bean時注入這些依賴關系。Spring實現IOC容器的基礎是org.springframework.be和org.springframework.context。
核心接口BeanFactory 接口提供了一種能夠管理任何類型對象的高級配置機制。 ApplicationContext 是一個子接口BeanFactory。它增加了與Spring的AOP功能更容易的集成; BeanFactory提供了配置框架和基本功能,并ApplicationContext增加了更多的企業特定功能。
在Spring中,構成應用程序的骨干并由Spring IoC 容器管理的對象稱為bean。bean是一個實例化,組裝并由Spring IoC容器管理的對象。
Spring如何工作的視圖:
Spring容器xml配置管理
通常是多個bean定義組成。基于XML的配置元數據將這些bean配置為<bean/>頂層元素內的<beans/>元素
如下圖提供spring的官方的配置文件模板(素材來源www.spring.io)
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="..." class="..."> <!-- collaborators and configuration for this bean go here --> </bean> <bean id="..." class="..."> <!-- collaborators and configuration for this bean go here --> </bean> <!-- more bean definitions go here --> </beans> |
當你通過構造函數的方法創建一個bean時,所有的普通類都可以被Spring使用和兼容。也就是說,正在開發的類不需要實現任何特定的接口或以特定的方式編碼。只需指定bean類就足夠了。但是,根據您用于特定bean的IoC類型,需要一個默認(空)構造函數。
使用基于XML的配置元數據,您可以指定您的bean類如下:
<bean id="exampleBean" class="examples.ExampleBean"/> <bean name="anotherExample" class="examples.ExampleBeanTwo"/> |
其中 bean 中的class 是我們交于spring初始化的bean的全路徑。
在定義使用靜態工廠方法創建的bean時,可以使用該class 屬性來指定包含static工廠方法的類和factory-method指定工廠方法本身的名稱的屬性。你應該可以調用這個方法(使用后面描述的可選參數)并返回一個實例化對象,這個實例化對象隨后被視為是通過構造函數創建的。用于這種bean定義的就是被稱為靜態工廠方式創建。
靜態工廠的定義
public class ClientService { private static ClientService clientService = new ClientService(); private ClientService() {} public static ClientService createInstance() { return clientService; } } |
配置xml
<bean id="clientService" class="examples.ClientService" factory-method="createInstance"/> |
這樣的spring框架在調用IOC實例化的使用是通過反射創建 調用靜態工廠的中的static方法去創建對象。此時在創建的對象的是在靜態方法手中。
實例化工廠的方式相同于靜態工廠方法,只是在一個實例工廠中反射一個存在對象的非靜態方法,從而去spring容器去創建實例化的bean。
創建實例化工廠
public class DefaultServiceLocator { private static ClientService clientService = new ClientServiceImpl(); private static AccountService accountService = new AccountServiceImpl(); public ClientService createClientServiceInstance() { return clientService; } public AccountService createAccountServiceInstance() { return accountService; } } |
配置xml:
<bean id="serviceLocator" class="examples.DefaultServiceLocator"> </bean> <bean id="clientService" factory-bean="serviceLocator" factory-method="createClientServiceInstance"/> <bean id="accountService" factory-bean="serviceLocator" factory-method="createAccountServiceInstance"/> |
關于“Spring中IOC容器的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。