@Component和@Named都是同一个bean类

Tec*_*und 31 java spring annotations dependency-injection

难道一类将作为一个Spring应用程序的Bean同时需要@Component@Named在同一时间?

如果两者都这样使用有什么意义?

我尝试搜索网络,并看到这些注释的标准文档,发现它们有点令人困惑.

最后,如果@Named注释没有为bean指定任何名称,应用程序将采用哪个名称?

axt*_*avt 59

@Component并且@Named注释基本上做同样的事情,但来自不同的API.

@Component属于Spring API.它将类标记为自动检测为bean,并可选择允许您为该bean指定名称(@Component("foo")).如果没有明确的名称规范,bean将获得从其类名称派生的默认名称.

@Named属于javax.injectAPI.它标记要作为bean自动检测的类,并要求您指定名称.

Spring支持这两种API.在同一个类中使用两个注释没有意义,因为它们提供相同的功能.

也可以看看:


Mag*_*GGG 9

Spring支持@Named注释(JSR-330)作为@Component(Spring)的替代.

一般来说,@Named名称很差,因为没有描述它的作用,所以我更愿意随时使用@Component.