无论@Component和@命名为同一bean类(Both @Component and @Name

2019-07-29 00:32发布

是否一类会在Spring应用程序作为一个bean既需要@Component@Named在同一时间?

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

我试着搜索网,以及看到了这些注释的标准文档,发现他们有点混乱。

最后,这名如果是通过应用程序@Named批注不指定任何bean的名字?

Answer 1:

@Component@Named是注解,基本上做同样的事情,但来自不同的API。

@Component属于春天的API。 这标志着类被自动检测作为一个bean和可选允许你指定这个bean的名字( @Component("foo") 如果没有明确的名称规范检出菜豆会得到它的类的名称派生的默认名称。

@Named属于javax.inject API。 这标志着类被自动检测作为一个bean,并要求您指定一个名称。

春天同时支持这些API。 它没有意义在同一类中使用这两种注解,因为它们提供相同的功能。

也可以看看:

  • 3.10的Classpath扫描和管理的组件


Answer 2:

弹簧支持@Named注解(JSR-330)来替代@Component (弹簧)。

一般来说, @Named甚少命名,因为没有描述它做什么,所以我更愿意用@Component每当我可以。



Answer 3:

无论是两个应该被使用。 同时使用@Component和@Named不作任何意义。 添加到上述(其他的)评论@Component(“[someComponentID]”)和@Named(“[someNamedID]”)通过使ID在括号,分配一个ID到Bean如果不是隐式分配一个。



文章来源: Both @Component and @Named for the same bean class