在java開發中有時候我們的一個類需要依賴另外一個類,這種就是依賴關系,創建對象的工作一般由spring容器來完成然后注入給調用者,這種就是依賴注入。
Java依賴注入設計原則允許我們移除硬編碼依賴和讓我們的應用低耦合,可擴展和可維護。我們可以通過在Java中實現依賴注入將依賴關系從編譯時移到運行時來解析。 Java依賴注入似乎很難通過理論來掌握。所以我將通過一些簡單的例子,然后我們將會看到如何在應用里使用依賴注入模式來實現低耦合和可擴展性。
一個最好的setter依賴注入的例子是 Struts2 Servlet API Aware interfaces 到底是使用基於構造器依賴注入還是基於setter方法依賴注入取決於你的需求。舉個例子,如果沒有服務類我的應用完全不能運行,那么我會偏向基於構造器的DI,否則我會選擇基於setter方法的DI,只有在真正需要才會使用它。 Java中的依賴注入是一種通過使對象從編譯時綁定移到運行時綁定來實現控制反轉(Inversion of control IoC)的一種方式。我們可以通過工廠模式(Factory Pattern), 模板方法設計模式(Template Method Design Pattern), 策略模式(Strategy Pattern)還有服務定位模式(Service Locator pattern)來實現IoC。 Spring依賴注入,Google Guice還有Java EE CDI框架通過使用Java Reflection API和Java注解來促進依賴注入的過程。我們只需要注解該域,構造器或者setter方法然后在配置xml文件或者配置類中配置它們。
Java依賴注入的好處 一些使用Java依賴注入的好處如下:關注點分離 應用程序類中的樣板代碼減少,因為所有用於初始化依賴性的工作都由注入器組件處理 配置組件使應用程序易擴展 通過模擬對象來單元測試會很簡單 Java依賴注入的缺點
Java依賴注入也有一些缺點: 如果過度使用,可能會導致維護問題,因為更改的影響只有在運行時才知道。 Java中的依賴注入可能會隱藏導致運行時錯誤的服務類的依賴性,這會在編譯時被捕獲。 以上就是Java中的依賴注入模式。當我們控制服務時,了解和使用它是很好的。
(ps:常用注入)