java - @Component 和 @Named 都用于同一个 bean 类

标签 java spring dependency-injection annotations

在 Spring 应用程序中充当 bean 的类是否同时需要 @Component@Named

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

我尝试在网上搜索并查看了这些注释的标准文档,发现它们有点困惑。

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

最佳答案

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

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

@Named 属于 javax.inject API。它将类标记为自动检测为 bean,并要求您指定名称。

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

另请参阅:

关于java - @Component 和 @Named 都用于同一个 bean 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10189531/

相关文章:

java - 矩阵中从源移动到目的地的最少马步数

java - 如何在 Spring 中使用 JPA 存储库从服务器检索 blob

android - 如何在android库项目中使用 Dagger 库?

c# - 我可以使用 StructureMap 向 ASP.NET MVC Controller 注入(inject)一些字符串(例如配置值)吗?

java - Jersey 的依赖注入(inject)

java - spring mvc登录后重定向到主页

java - wait() , notify() - 哪个线程首先解锁?

java - Spring Ldap : Lookup dn without throwing exception if it isn't there

java - 无论我做什么都无法安装 spring-boot-starter-parent

java - Spring:检查异常的自动回滚