我已經玩過JSR-299參考實現「焊接」,目的是將其用於獨立應用程序,並且我查看了文檔,並對這個魔術感到驚歎。焊接@Inject的依賴注入(JSR-299 RI)。相應的@Produces如何找到?
我的問題是如何找到給定對象的生產者@Inject'ed?
java編譯器生成註釋的提示可以很容易地被類加載器找到,或者必須遍歷完整的類路徑來加載所有的類來看看他們做了什麼,這對我來說聽起來效率很低,或者它是一種完全不同的方法。
有什麼竅門?
我已經玩過JSR-299參考實現「焊接」,目的是將其用於獨立應用程序,並且我查看了文檔,並對這個魔術感到驚歎。焊接@Inject的依賴注入(JSR-299 RI)。相應的@Produces如何找到?
我的問題是如何找到給定對象的生產者@Inject'ed?
java編譯器生成註釋的提示可以很容易地被類加載器找到,或者必須遍歷完整的類路徑來加載所有的類來看看他們做了什麼,這對我來說聽起來效率很低,或者它是一種完全不同的方法。
有什麼竅門?
將掃描classpath以查找「bean檔案」。 Bean檔案是那些包含META-INF/beans.xml
的庫。這些檔案中的所有豆類都會自動註冊到BeanManager
,並對其註釋進行分析和存儲。無論何時需要生產者,都會向合格的生產者諮詢bean經理
我假設它和Seam中的一樣:其中類路徑確實被掃描。 impl還將搜索具有最小匹配範圍的@produce,因此您可以在會話級別爲登錄用戶生成一個產品,爲匿名用戶生成另一個在應用程序級別的產品。
不知道,但是這個由@Hibernate的父親部分完成的@Inject終於被SpringSource和Google重新設計/影響了。也許它有點像Guice?
@ @ Inject註解本身由Guice和Spring成員組成的團隊指定。它是另一個JSR的一部分。 – Bozho 2010-04-20 19:57:31