更新時間:2022-08-01 11:31:00 來源:動力節點 瀏覽1739次
Java依賴注入是什么意思?動力節點小編來告訴大家。
依賴注入 (DI) 是對象從外部獲取其他所需對象的概念。
DI 可以用任何編程語言實現。依賴注入背后的一般概念稱為控制反轉。
如果 Java 類使用此類的實例,則它依賴于另一個類。我們稱之為類依賴。例如,訪問記錄器服務的類依賴于該服務類。
理想情況下,Java 類應該盡可能獨立于其他 Java 類。這增加了重用這些類的可能性,并且能夠獨立于其他類來測試它們。
如果 Java 類通過new運算符創建另一個類的實例,則不能獨立于該類使用(和測試)它,這稱為硬依賴。下面的例子展示了一個沒有硬依賴的類。
package com.vogella.tasks.ui.parts;
import java.util.logging.Logger;
public class MyClass {
private Logger logger;
public MyClass(Logger logger) {
this.logger = logger;
// write an info log message
logger.info("This is a log message.")
}
}
一個框架類,通常稱為依賴容器,可以分析這個類的依賴關系。通過這種分析,它能夠創建類的實例并通過 Java 反射將對象注入到定義的依賴項中。
這樣 Java 類就沒有硬依賴,這意味著它不依賴于某個類的實例。這允許您單獨測試您的類,例如使用模擬對象。
模擬對象(模擬)是行為與真實對象相似的對象。但是這些模擬不是編程的;它們被配置為以某種預定義的方式運行。Mock是一個英文單詞,意思是模仿或模仿。
如果使用依賴注入,則可以單獨測試 Java 類。
存在不同的方法來描述類的依賴關系。最常見的方法是使用Java注解直接在類中描述依賴關系。
Java Specification Request 330 (JSR330) 中定義了用于描述類依賴關系的標準 Java 注釋。本規范描述了@Inject和@Named注釋。
以下清單顯示了一個使用注釋來描述其依賴關系的類。
// import statements left out
public class MyPart {
@Inject private Logger logger;
// inject class for database access
@Inject private DatabaseAccessClass dao;
@Inject
public void createControls(Composite parent) {
logger.info("UI will start to build");
Label label = new Label(parent, SWT.NONE);
label.setText("Eclipse 4");
Text text = new Text(parent, SWT.NONE);
text.setText(dao.getNumber());
}
}
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習