A. 什麼是java的依賴注入
Java的依賴注入:依賴注入,出自spring的IOC和DI,是Spring的兩大特性之一(另一個AOP面向切面編程)
以前對象使我們手動實例化,比如:Service層調用Dao層,需要Dao d = new Dao;但是這樣會導致兩個層之間的耦合性大大增強。而spring的IOC,反轉控制,會在我們需要實例對象的時候,由spring容器為我們提供,並通過DI依賴注入來實現目標對象的獲得,完成解耦操作。
可以通過setter方法注入、構造注入、註解注入。
B. 依賴注入究竟有什麼好處
把對象生成放在了XML里定義,所以換一個實現子類將會變成很簡單(一般這樣的對象都是實現於某種介面的),只要修改XML就可以。這樣甚至可以實現對象的熱插撥。
C. 依賴注入體現了java哪種特徵
樓主您好
如果硬說的話,應該是「封裝「(調set或者構造方法),其實ioc體現的就是面向對象本身的特性。
D. java反射機制能實現依賴注入嗎
事實上Spring的依賴注入必然是採用反射機制的。
看看反射的定義:
反射的概念是由Smith在1982年首次提出的,主要是指程序可以訪問、檢測和修改它本身狀態或行為的一種能力。
對於Java來說,就是在運行狀態中,查詢這個類、對象的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法、修改它的屬性。
而所謂的依賴注入就是指在運行時(不是編譯時)改變對象的屬性或者調用對象的構造方法。
其實依賴注入是很容易實現的,你自己可以嘗試一下,Spring的偉大之處並不在於技術有多難,而是在於他把這種技術發展成一種開發模式和框架。
E. 講講什麼是依賴注入以及給我們的項目開發帶來了什麼好處
依賴注入(Dependency Injection)和控制反轉(Inversion of Control)是同一個概念。具體含義是:當某個角色(可能是一個Java實例,調用者)需要另一個角色(另一個Java實例,被調用者)的協助時,在 傳統的程序設計過程中,通常由調用者來創建被調用者的實例。但在Spring里,創建被調用者的工作不再由調用者來完成,因此稱為控制反轉;創建被調用者 實例的工作通常由Spring容器來完成,然後注入調用者,因此也稱為依賴注入。
不管是依賴注入,還是控制反轉,都說明Spring採用動態、靈活的方式來管理各種對象。對象與對象之間的具體實現互相透明。在理解依賴注入之前,看如下這個問題在各種社會形態里如何解決:一個人(Java實例,調用者)需要一把斧子(Java實例,被調用者)。
(1)原始社會里,幾乎沒有社會分工。需要斧子的人(調用者)只能自己去磨一把斧子(被調用者)。對應的情形為:Java程序里的調用者自己創建被調用者。
(2)進入工業社會,工廠出現。斧子不再由普通人完成,而在工廠里被生產出來,此時需要斧子的人(調用者)找到工廠,購買斧子,無須關心斧子的製造過程。對應Java程序的簡單工廠的設計模式。
(3)進入「按需分配」社會,需要斧子的人不需要找到工廠,坐在家裡發出一個簡單指令:需要斧子。斧子就自然出現在他面前。對應Spring的依賴注入。
第一種情況下,Java實例的調用者創建被調用的Java實例,必然要求被調用的Java類出現在調用者的代碼里。無法實現二者之間的松耦合。
第二種情況下,調用者無須關心被調用者具體實現過程,只需要找到符合某種標准(介面)的實例,即可使用。此時調用的代碼面向介面編程,可以讓調用者和被調用者解耦,這也是工廠模式大量使用的原因。但調用者需要自己定位工廠,調用者與特定工廠耦合在一起。
第三種情況下,調用者無須自己定位工廠,程序運行到需要被調用者時,系統自動提供被調用者實例。事實上,調用者和被調用者都處於Spring的管理下,二者之間的依賴關系由Spring提供。
F. java spring中 為什麼 和service用依賴注入
使用了依賴注入的類可以在spring容器中統一控制這些類的實例模式(單例模式、原型模式...),為的就是解決高並發和多線程造成的性能和安全問題。而實體類不需要考慮Dao、service的這些問題,你可以使用依賴注入:
第一顯得特別麻煩
第二默認情況下被spring管理的bean都是單例模式,這種情況下容易出現數據問題(因為只實例化一次,多出用到了)
G. java中的依賴注入和引用對象有什麼區別
private User loginUser; 這句話是生命這個類擁有一個私有對象引用。set方法可以對外提供對這個私有成員對象引用賦值。spring中對象一般都是有spring容器創建,並且沒有作特殊配置聲明,創建的對象都是單例的,如果沒有set方法,就沒法注入這個對象。
H. java 反射與依賴注入的關系
事實上Spring的依賴注入就是採用反射機制的。
反射是指程序可以訪問、檢測和修改它本身狀態或行為的一種能力。對於Java來說,就是在運行狀態中,查詢這個類、對象的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法、修改它的屬性。
而所謂的依賴注入就是指在運行時(不是編譯時)改變對象的屬性或者調用對象的構造方法。
I. JAVA使用Spring進行依賴注入怎麼實現
例如: UserService類有個getUsers()方法,我要在UserAction類使用這個方法這樣操作,
class UserAction{
private UserService userService;
//添加一個set方法
public void execute(){
List list = userService.getUsers();
}
}
//在spring配置文件進行依賴注入(如:UserService類在test包下的service包下)
<bean id="userService" class="test.service.UserService"/> //這就是依賴注入了