回答
在給出依賴注入能力之前,您給出的由TextEditor類使用的SpellChecker示例可能看起來像這樣。您正在使用它的方法內創建類SpellChecker的新實例。
public class TextEditor {
public void doSomething() {
new SpellChecker().checkSpelling();
}
}
如果你想分離的代碼,並能夠通過一個模擬的單元測試的目的,或通過您的依賴注入容器提供的另一種實現方式,以取代拼寫檢查,你必須改變類,並提供一個字段,這實例可以被注入。
public class TextEditor {
@Autowired
private SpellChecker spellChecker;
public void doSomething() {
spellChecker.checkSpelling();
}
}
因爲這仍然是不容易測試,因爲你需要使用反射來注入模擬成私有字段,你可以提供一個二傳手或者取出修改從外地民營使該字段包可見。因此,同一包中的單元測試可以訪問此字段並提供模擬。
是的,我的問題是「你必須改變類並提供一個可以注入此實例的字段」,這是否意味着它無法注入局部變量'spellChecker',但必須將其更改爲成員變量使用DI? 作爲一個側面問題,我已經在代碼示例之前縮進了四個空格,但爲什麼它仍然顯示在一行上?你用什麼方法發佈上述示例代碼? @ stefanglase @ Don @ Matt – user1169587
是的,您必須更改類並引入依賴項的字段。有些方法可以捕獲和注入類似'New SomeClass()'這樣的語句的地方,但是你的類會告訴與執行時會發生什麼不同的東西。有關此功能,請參閱PowerMock。並回答你的第二個問題:你不能在註釋中格式化代碼。 – stefanglase
對不起,我的愚蠢,「但你的班級會告訴與執行時發生的事情不同的是什麼」。無論如何,對於春天來說,DI不能用於局部變量嗎?或者DI不是爲局部變量設計的? – user1169587
- 1. 在外部jar彈簧依賴注入
- 2. 彈簧依賴注入不起作用
- 3. 彈簧3依賴注入和接口
- 4. 彈簧依賴注入的NullPointerException
- 5. 彈簧依賴注入週期
- 6. 彈簧自動依賴注入
- 7. 多個類的彈簧依賴注入
- 8. Hazelcast不注入彈簧依賴關係
- 9. 彈簧依賴注入和泛型類
- 10. 使用構建模式的彈簧依賴注入
- 11. 使用RMI進行彈簧依賴注入
- 12. 在獨立的jar中使用彈簧進行依賴注入
- 13. 彈簧3依賴注入(IOC)與註釋
- 14. 用彈簧引導向Logback Appender依賴注入
- 15. 使用依賴注入來注入依賴注入器
- 16. 良好實踐:保持局部變量作用域VS依賴關係注入
- 17. 彈簧罐依賴關係
- 18. 依賴注入和依賴不使用
- 19. 彈簧依賴注入與JSF2中的空指針異常
- 20. 彈簧依賴注入工廠(動態值)
- 21. Liferay配置操作類 - 彈簧依賴注入
- 22. 在彈簧配置文件中動態依賴注入
- 23. 取決於請求對象的彈簧依賴注入
- 24. 彈簧4依賴注入抽象泛型類不工作
- 25. 彈簧構造函數依賴注入問題
- 26. 彈簧依賴注入到具有構造函數的類
- 27. 依賴注入彈簧/駱駝垃圾收集
- 28. 玩! 2.x與Java 8和彈簧依賴注入
- 29. 訪問依賴注入的類變量
- 30. 依賴注入,而不是全局變量
局部變量的依賴注入甚至意味着什麼?請向我們展示一些代碼,並解釋您想要實現的目標! –
你的意思是構造函數注入?或者注入沒有setter的變量?... –
也許我不清楚爲什麼要使用DI。 我看到鏈接[鏈接](http://www.tutorialspoint.com/spring/setter_based_dependency_injection.htm) 從示例類TextEditor方法spellCheck(),我認爲如果spellChecker是像下面這樣的局部變量: SpellChecker spellChecker =新的SpellChecker(); spellChecker.checkSpelling(); 然後如何替換'新的SpellChecker();'與DI? 或在這種情況下不應該使用DI? – user1169587