Guice指南-用Guice實現依賴注入
手工為每一個服務與客戶實現工廠類和依賴注入邏輯是一件很麻煩的事情。其他一些依賴注入框架甚至需要你顯式將服務對映到每一個需要注入的地方。
Guice 希望在不犧牲可維護性的情況下去除所有這些程式化的程式碼。
使用 Guice,你只需要實現模組類。Guice 將一個繫結器傳入你的模組,你的模組使用繫結器來連線介面和實現。以下模組程式碼告訴 Guice 將 Service 對映到單件模式的 ServiceImpl:
public class MyModule implements Module {
public void configure(Binder binder) {
binder.bind(Service.class)
.to(ServiceImpl.class)
.in(Scopes.SINGLETON);
}
}
模組類告訴 Guice 我們想注入什麼東西。那麼,我們該如何告訴 Guice 我們想把它注入到哪裡呢?使用 Guice,你可以使用 @Inject 標註你的構造器,方法或欄位:
public class Client {
private final Service service;
@Inject
public Client(Service service) {
this.service = service;
}
public void go() {
service.go();
}
}
@Inject 標註可以清楚地告訴其他程式設計師你的類中哪些成員是被注入的。
為了讓 Guice 向 Client 中注入,我們必須直接讓 Guice 幫我們建立 Client 的例項,或者,其他類必須包含被注入的 Client 例項。
Guice vs. 手工依賴注入
如你所見,Guice 省去了寫工廠類的麻煩。你不需要編寫程式碼將客戶連線到它們所依賴的物件。如果你忘了提供一個依賴關係,Guice 在啟動時就會失敗。Guice 也會自動處理迴圈依賴關係。
Guice 允許你通過宣告指定物件的作用域。例如,你需要編寫相同的程式碼將物件反覆存入 HttpSession。
實際情況通常是,只有到了執行時,你才能知道具體要使用哪一個實現類。因此你需要元工廠類或服務定位器來增強你的工廠模式。Guice 用最少的代價解決了這些問題。
手工實現依賴注入時,你很容易退回到使用直接依賴的舊習慣,特別是當你對依賴注入的概念還不那麼熟悉的時候。使用 Guice 可以避免這種問題,可以讓你更容易地把事情做對。Guice 使你保持正確的方向。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13270562/viewspace-214953/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Guice指南-手工依賴注入GUI依賴注入
- Guice 依賴繫結GUI
- 【翻譯】 Guice 動機——依賴注入的動機GUI依賴注入
- Guice指南-與 JNDI 整合GUI
- Guice指南-入門認識GUI
- 依賴注入?依賴注入是如何實現解耦的?依賴注入解耦
- 用 Dagger 2 實現依賴注入依賴注入
- iOS實現依賴注入iOS依賴注入
- Guice指南-簡單工廠模式GUI模式
- Guice 示例GUI
- PHP 依賴注入容器實現PHP依賴注入
- 依賴注入實現元件化依賴注入元件化
- Guice指南-自舉(Bootstrapping)你的應用GUIbootAPP
- 用trait實現簡單的依賴注入AI依賴注入
- go語言依賴注入實現Go依賴注入
- JavaScript依賴注入的實現思路JavaScript依賴注入
- 動手實現你的依賴注入依賴注入
- Elasticsearch 中的 GuiceElasticsearchGUI
- Guice學習心得GUI
- Guice與DWR整合GUI
- 初次認識GuiceGUI
- EJB 3.0開發指南之依賴注入依賴注入
- Laravel 中的依賴注入和 IoC 實現Laravel依賴注入
- 使用 .NET Core 實現依賴關係注入
- 關於Golang中的依賴注入實現Golang依賴注入
- Go中使用Google Wire實現依賴注入Go依賴注入
- ASP.NET WebApi + Autofac 實現依賴注入ASP.NETWebAPI依賴注入
- Google Guice的Binder介面GoGUI
- 例項認識GuiceGUI
- angular依賴注入Angular依賴注入
- XUnit 依賴注入依賴注入
- Struts 依賴注入依賴注入
- 利用反射機制實現依賴注入的原理反射依賴注入
- JavaEE依賴注入CDI的開源實現: WeldJava依賴注入
- Angular 的依賴注入是怎麼實現的?Angular依賴注入
- Asp.Net Mvc使用Autofac實現依賴注入ASP.NETMVC依賴注入
- 依賴倒置(DIP)與依賴注入(DI)依賴注入
- DIY 實現 ThinkPHP 核心框架 (十四)利用反射實現依賴注入PHP框架反射依賴注入