在Spring中有兩個單獨的註釋來按名稱執行依賴注入,javax.annotation.Resource
和javax.inject.Named
。該documentation at Spring表示@Resource
應使用注射用名:Spring依賴注入,使用@Named或@Resource?
如果要表達的名字註解驅動的注入,不 主要使用@Autowired,即使在技術上能夠參考 一個bean的名字通過@Qualifier值。相反,請使用JSR-250 @資源註釋,該資源註釋在語義上定義爲通過其唯一名稱標識特定目標組件,並且聲明的類型 與匹配過程無關。
以上是有點混亂,因爲Spring僅主張@Resource
代替@Autowired
與@Qualifer
組合。在later in the documentation之前沒有提及@Named
。
JSR-250定義了@Resource
,而JSR-330定義了@Inject
和@Named
。我知道他們可以很容易地在Spring中混合搭配。使用哪個JSR?
似乎可移植性與Guice和CDI會很好,因此可以使用JSR-330註釋。另一方面,當使用JSR-330註釋時,文檔中還指出了Spring中幾個limitations。
注射按名稱註釋的最佳實踐(如果有的話)是什麼?
謝謝。
所提及的限制僅僅是指Spring將如何使用這些註釋,以及Spring如何引入註釋對於Spring的具體操作更加健壯。 – 2013-02-25 16:55:43
這些限制似乎並不那麼繁重。儘管它們確實存在。如果Spring也採用了額外的CDI註釋,似乎很多情況會更簡單。 – Saish 2013-02-25 17:32:59