2012-03-03 741 views
6

我想構建自己的基於Java註釋的自定義DI框架,我需要一個小小的方向開始。我知道使用諸如guice或spring之類的許多精彩框架中的一個會容易得多,但爲了我自己的好奇心,我想構建自己的框架。依賴注入與註解

我對註釋不是很熟悉,所以我在查找資源時遇到了一些問題,並且非常感謝某人解釋了我需要採取的一些步驟來開始。

如前所述,id喜歡採取工廠方法,並以某種方式將我的getter標記爲@Resource或@Injectable類型註釋,然後在我的業務類中可以使用@Inject註釋設置我的變量依賴項,資源自動可用。

有沒有人有任何資源可以傳遞,以幫助我理解基於註釋標記方法的過程,然後從基於註釋的單獨類中檢索值。我需要一個小小的方向,讓我開始。當然,一旦我走了,我會很高興在這裏發佈一些代碼示例,爲了其他人今後的閱讀。

編輯

我使用的資源放在了一起:

Java Reflection: Annotations

How to find annotations in a given package: Stack Overflow ?

Scanning Annotations at Runtime

我還沒有真正完成還沒有寫這個,但基本任務李ST將是如下(的人誰可能有興趣做,今後類似的東西)

  1. 在類運行時掃描所有@Inject領域,並得到對象類型。

  2. 對註釋方法@InjectableResource掃描所有類(或只是一個特定的類包(我還沒有確定 )))。

  3. 循環所有帶註釋的方法,並找到返回我要查找的對象類型的 方法。

  4. 運行該方法並獲得依賴關係。

注意到在掃描所有類時我將使用一個名爲Javassist的庫也會很有幫助。基本上,這樣做可以讓我在不實際加載類的情況下讀取每個類的字節碼信息。所以我可以讀取註釋字符串而不會產生嚴重的內存問題。

+0

可以與標準甲骨文註釋步道】開始(http://docs.oracle.com/javase/tutorial/java/javaOO/annotations.html)。您需要一些方法來掃描整個類路徑中的資源,一種方式是使用像[Google Reflections](http://code.google.com/p/reflections/)這樣的工具。最後,