Hello Spring

Spring IOC的介紹:

通常,應用代碼需要告知容器或框架,讓它們找到自身所需要的類,然後再由應用代碼創建待使用的對象實例。因此,應用代碼在使用實例之前,需要創建對象實例。然而,[color=green]IoC模式中,創建對象實例的任務交給IoC容器或框架(Spring的配置文件),使得應用代碼只需要直接使用實例,這就是IoC。[/color]相對IoC 而言,“依賴注入”的確更加準確的描述了這種設計理念。所謂依賴注入,即組件之間的依賴關係由容器在運行期決定,形象的來說,即由容器動態的將某種依賴關係注入到組件之中。

任何重要的系統都需要至少兩個相互合作的類來完成業務邏輯。通常,每個對象都要自己負責得到它的合作(依賴)對象。你會發現,這樣會導致代碼耦合度高而且難於測試。[color=green]使用IoC,對象的依賴都是在對象創建時由負責協調系統中各個對象的外部實體提供的,這樣使軟件組件鬆散連接成爲可能。[/color]

(1)應用組件不需要在運行時尋找其協作者,因此更易於開發和編寫應用;

(2)由於藉助於IoC容器管理組件的依賴關係,使得應用的單元測試和集成測試更利於展開;

(3)通常,在藉助於IoC容器關係業務對象的前提下,很少需要使用具體IoC容器提供的API,這使得集成現有的遺留應用成爲可能。

因此,通過使用IoC能夠降低組件之間的耦合度,最終,能夠提高類的重用性,利於測試,而且更利於整個產品或系統集成和配置

[color=green]依賴注入和控制反轉是同一個概念。具體含義:是當某個角色(可能是一個實例,調用者)需要另一個角色(另一個實例,被調用者)的協助時,在傳統的程序設計過程中,通常由調用者來創建被調用者的實例。但在Spring裏,創建被調用者的工作不再由調用者來完成,因此稱爲控制反轉;創建被調用者實例的工作通常由Spring容器來完成,然後注入調用者,因此也稱爲依賴注入。不管是依賴注入,還是控制反轉,都說明Spring採用動態、靈活的方式來管理各種對象。[/color]

bean:那些組成應用的主題及有Spring IoC容器所管理的對象被稱之爲bean,而bean和bean之間的相互依賴關係通過配置元數據(xml文檔)來描述。bean定義與應用程序中實際使用的對象一一對應,通常情況下bean的定義包括:服務層對象,數據訪問層對象(DAO)等等。

容器:在SPRING中,org.springframework.beans.factory.BeanFactory是Spring IoC容器的實際代表者,IOC容器負責容納此前所描述的bean,並對bean進行管理。

實例化容器:
ApplicationContext context=new ClassPathXmlApplicationContext'applicactionContext.xml';
BeanFactory factory=BeanFactorycontext;


package onlyfun.caterpillar;

public class HelloBean {
private String helloWord = "Hello!World!";

public void setHelloWord(String helloWord) {
this.helloWord = helloWord;
}

public String getHelloWord() {
return helloWord;
}
}


package onlyfun.caterpillar;

import java.io.*;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;

public class SpringTest {
public static void main(String[] args) throws IOException {
//InputStream is = new FileInputStream("D:\\apache-tomcat-6.0.18\\webapps\\axis\\WEB-INF\\classes\\bean.xml");

//BeanFactory factory = new XmlBeanFactory(is);

Resource resource = new FileSystemResource("WEB-INF/classes/bean.xml");
BeanFactory factory = new XmlBeanFactory(resource);
HelloBean hello = (HelloBean) factory.getBean("helloBean");
System.out.println(hello.getHelloWord());
}
}


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="helloBean" class="onlyfun.caterpillar.HelloBean">
<property name="helloWord">
<value>Hello!Justin!</value>
</property>
</bean>
</beans>


:arrow:

- JDK 1.4+ collections available

- Loading XML bean definitions from file [D:\apache-tomcat-6.0.18\webapps\axis\WEB-INF\classes\bean.xml]

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