一、spring的容器
”容器“是spring的一個重要概念,其主要作用是完成創建成員變量,並完成裝配。
而容器的特點”控制反轉“和”依賴注入“是兩個相輔相成的概念。
控制反轉:我們在使用一個類型的實例實現某個功能時,需要先new出該類型的一個實例,並賦值給我們聲明的某個引用變量,這樣我們才能夠使用該變量進行操作。而new和賦值本事我們自己的權限,此處便是將該控制權限反轉交給了spring。
依賴注入:某個類型要完成一個功能往往需要其他類型的變量來完成,我們在程序中往往通過自己new的方式來完成這個需求,而在spring中,它會幫助我們將這種裝配的功能實現,這便是依賴注入。
二、在系統中實現
在spring中只使用IOC容器的話,那么前面命名空間的聲明只需要使用
<?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即可:
<bean id="name" class="com.brolanda.spring.p.Name"> <property name="givenName" value="斯里" /> <property name="middleName" value="蘭" /> <property name="lastName" value="卡" /> </bean>
我們需要在Name這個類中,聲明類型為String的變量名稱,對應property標簽的name屬性,並為每個屬性設置set、get方法,這樣spring才能夠幫你注入。
public class Name { private String givenName; private String middleName; private String lastName; public String getGivenName() { return givenName; } public void setGivenName(String givenName) { this.givenName = givenName; } public String getMiddleName() { return middleName; } public void setMiddleName(String middleName) { this.middleName = middleName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } }
如果成員變量是其他自定義類型的實例,那么,我們需要先聲明該自定義類型的bean,然后再在調用類的聲明中引入對應的bean即可:
<bean id="person" class="com.brolanda.spring.p.Person"> <property name="name"> <ref bean="name" /> </property> </bean>
即:person是引用了上面聲明的name對象作為其成員變量。
整體如下: