2010-04-04 45 views
2

我已經玩過JSR-299參考實現「焊接」,目的是將其用於獨立應用程序,並且我查看了文檔,並對這個魔術感到驚歎。焊接@Inject的依賴注入(JSR-299 RI)。相應的@Produces如何找到?

我的問題是如何找到給定對象的生產者@Inject'ed?

java編譯器生成註釋的提示可以很容易地被類加載器找到,或者必須遍歷完整的類路徑來加載所有的類來看看他們做了什麼,這對我來說聽起來效率很低,或者它是一種完全不同的方法。

有什麼竅門?

回答

4

將掃描classpath以查找「bean檔案」。 Bean檔案是那些包含META-INF/beans.xml的庫。這些檔案中的所有豆類都會自動註冊到BeanManager,並對其註釋進行分析和存儲。無論何時需要生產者,都會向合格的生產者諮詢bean經理

0

我假設它和Seam中的一樣:其中類路徑確實被掃描。 impl還將搜索具有最小匹配範圍的@produce,因此您可以在會話級別爲登錄用戶生成一個產品,爲匿名用戶生成另一個在應用程序級別的產品。

0

不知道,但是這個由@Hibernate的父親部分完成的@Inject終於被SpringSource和Google重新設計/影響了。也許它有點像Guice?

+0

@ @ Inject註解本身由Guice和Spring成員組成的團隊指定。它是另一個JSR的一部分。 – Bozho 2010-04-20 19:57:31