依賴注入框架Google Guice

Spring框架的依賴注入是家喻戶曉的,但是在實際的開發中我們想使用便捷的依賴注入功能,但是又不想引入Spring框架的複雜性,該怎麼辦呢?

有了Google Guice,這個問題便簡單了,首先在你的maven項目裏引入

官方文檔裏給出的例子又臭又長,我不使用官方的例子,下面我們來寫個最簡單的HelloWorld

我們使用Guice創建了一個注射器Injector,然後從Injector拿到你想要的對象就可以了,Guice會自動裝配依賴樹。Guice的啓動速度是很快的,在一個大型應用中,Guice裝配所有的模塊決不會超過1s。Guice是一個非常乾淨的依賴注入框架,框架除了依賴注入功能之外,沒有任何其它非相關模塊功能。

Guice裏最常用的兩個註解就是@Singleton和@Inject,Singleton表示構建的對象是單例的,Inject表示被標註的字段將使用Guice自動注入。在一般的項目中這兩個註解一般可以完成90%以上的裝配工作。

Guice需要實例化對象,請確保相應被實例化的對象有默認構造器。

當某個接口有多個實現時,我們使用@ImplementedBy註解在接口定義上,指定接口的具體實現類

如果我們不用Singleton標註,每次獲取實例時,Guice會重新構造一個,這個會有反射構造器的性能損耗,在高性能場景下,請謹慎。

我們可以不使用@ImplementedBy註解,因爲這樣不優雅,誰會在定義接口的時候就能預知實現類的名稱呢。我們可以使用Guice Module定義裝配規則,它相當於Spring的XML文件,只不過它的裝配規則都是使用代碼定義的。你可能會辯解說代碼定義怎麼能比得上XML定義呢,其實Guice Module在一個大型項目中也是非常的簡潔,一般只會佔用幾十行代碼,Module裏面配置的僅僅是特殊的專配規則。能規則的可讀性而言,代碼要比XML舒服的多。

我們還可以使用@Named名稱指令來指定依賴注入實現

我們不使用字段注入,改用構造器注入,如果我們需要在構造器裏做一些特別的初始化工作

還可以自動注入Set,Map容器,但是得首先加上擴展庫

注入Set

注入Map

在全世界都沉迷於複雜的Spring框架時,Guice無疑是一股清流,在炎熱的夏天,它就像一杯冰爽的橙汁,讓人暢快不已。


鏈接:https://www.jianshu.com/p/9ac108d14608

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章