在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