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

Both @Component and @Named for the same bean class(@Component 和 @Named 都用于同一个 bean 类)
本文介绍了@Component 和 @Named 都用于同一个 bean 类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

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

Does a class which will act as a bean in a Spring application require both @Component and @Named at the same time?

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

What is the significance if both are used so?

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

I tried searching the net as well as saw the standard documentation of these annotations and found them a bit confusing.

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

Finally which name is taken by the application if the @Named annotation does not specify any name for the bean?

推荐答案

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

@Component and @Named are annotations that basically do the same thing, but come from different APIs.

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

@Component belongs to Spring API. It marks class to be autodetected as a bean and optionally allows you to specify a name for that bean (@Component("foo")). Without explicit name specification detected bean will get a default name derived from the name of its class.

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

@Named belongs to javax.inject API. It marks class to be autodetected as a bean and requires you to specify a name.

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

Spring supports both these APIs. It doesn't make sense to use both annotations at the same class since they provide the same functionality.

另请参阅:

  • 3.10 类路径扫描和托管组件

这篇关于@Component 和 @Named 都用于同一个 bean 类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

How to send data to COM PORT using JAVA?(如何使用 JAVA 向 COM PORT 发送数据?)
How to make a report page direction to change to quot;rtlquot;?(如何使报表页面方向更改为“rtl?)
Use cyrillic .properties file in eclipse project(在 Eclipse 项目中使用西里尔文 .properties 文件)
Is there any way to detect an RTL language in Java?(有没有办法在 Java 中检测 RTL 语言?)
How to load resource bundle messages from DB in Java?(如何在 Java 中从 DB 加载资源包消息?)
How do I change the default locale settings in Java to make them consistent?(如何更改 Java 中的默认语言环境设置以使其保持一致?)