Java開發之Spring框架入門學習

專案目錄

Java開發之Spring框架入門學習

控制反轉-IOC

步驟:

匯入相關jar包 lib

編寫Spring配置檔案(名稱可自定義), beans。xml

定義類:

package com。xj。bean;public class Hello { private String name; public Hello() { System。out。println(“Hello物件被建立”); } public void setName(String name) { this。name = name; } public void show() { System。out。println(“我親愛的,” + name); }}

編寫Spring配置檔案(名稱可自定義), beans。xml

<?xml version=“1。0” encoding=“UTF-8”?> <!——bean就是java物件,由spring容器來建立和管理——>

測試程式碼:

package com。xj。test;import com。xj。bean。Hello;import javafx。application。Application;import org。springframework。context。ApplicationContext;import org。springframework。context。support。ClassPathXmlApplicationContext;public class Test { public static void main(String[] args) { //解析beans。xml檔案,生產相應的bean物件 ApplicationContext context = new ClassPathXmlApplicationContext(“beans。xml”); Hello hello = (Hello)context。getBean(“hello”); hello。show(); }}

output:

十一月 07, 2019 10:02:34 下午 org。springframework。context。support。AbstractApplicationContext prepareRefresh資訊: Refreshing org。springframework。context。support。ClassPathXmlApplicationContext@244038d0: startup date [Thu Nov 07 22:02:34 CST 2019]; root of context hierarchy十一月 07, 2019 10:02:34 下午 org。springframework。beans。factory。xml。XmlBeanDefinitionReader loadBeanDefinitions資訊: Loading XML bean definitions from class path resource [beans。xml]Hello物件被建立我親愛的,中國Process finished with exit code 0

思考:

1、Hello物件是誰建立的?

可以使用hello。show();呼叫它的方法,說明Hello物件被建立。

Hello物件是由Spring容器建立的

2、hello物件的屬性是怎麼設定的(即name怎麼得到“中國”的)?

Hello物件的屬性是由Spring容器設定的,這個過程就叫控制反轉

控制的內容:指誰來控制物件的建立,傳統的應用程式物件的建立是由程式本身,使用Spring之後,由Spring來建立物件。

反轉:(建立物件的)許可權的轉移

正轉:指程式來建立物件;

反轉:指程式本身不去建立物件,而變為被動去接收由Spring容器建立的物件。

總結:以前物件由程式本身(service實現類)來建立,使用Spring後,程式變為被動接收Spring建立好的物件。

控制反轉:——依賴注入(dependency injection)

依賴注入(dependency injection)

比如:Hello類,依賴name,name的值是透過容器來設定的。

反過來,“中國”這個value是透過

public void setName(String name){

this。name = name;

}