在Spring應用程序中充當bean的類是否同時需要@Component
和@Named
?對於同一個Bean類@Component和@Named
如果同時使用兩者,意義何在?
我試着搜索網絡以及看到這些註釋的標準文檔,發現它們有點混亂。
最後,如果@Named
註釋沒有爲該bean指定任何名稱,應用程序將採用哪個名稱?
在Spring應用程序中充當bean的類是否同時需要@Component
和@Named
?對於同一個Bean類@Component和@Named
如果同時使用兩者,意義何在?
我試着搜索網絡以及看到這些註釋的標準文檔,發現它們有點混亂。
最後,如果@Named
註釋沒有爲該bean指定任何名稱,應用程序將採用哪個名稱?
@Component
和@Named
是註釋,基本上做同樣的事情,但來自不同的API。
@Component
屬於Spring API。它將類標記爲自動檢測爲bean,並且可以選擇允許您指定該bean的名稱(@Component("foo")
)。如果沒有明確的名稱說明,檢測到的bean將得到一個從其類的名稱派生的默認名稱。
@Named
屬於javax.inject
API。它將類標記爲自動檢測爲bean,並要求您指定一個名稱。
Spring支持這兩種API。因爲它們提供相同的功能,所以在同一個類中使用兩個註釋都沒有意義。
參見:
Spring支持@Named
註解(JSR-330)來替代@Component
(彈簧)。
一般來說,@Named
的名字很差,因爲沒有描述它的功能,所以我寧願在任何時候都使用@Component
。
兩者都應該使用。 使用@Component和@Named都沒有任何意義。 添加到上面(其他)的註釋@Component(「[someComponentID]」)和@Named(「[someNamedID]」)通過在括號中傳遞ID來爲bean分配ID,如果沒有隱式分配。
同意,(a)名字命名不好。然而,許多類是不同框架項目之間的共享資源。使用@Named來bean-ify這個類需要javax.injection作爲每個應用程序的一個依賴項,比另一個依賴於Spring的框架要好得多。 – Freestyle076 2017-10-12 21:39:36