Java 为什么在控制器注释中使用@Component

Java 为什么在控制器注释中使用@Component,java,spring,annotations,spring-annotations,Java,Spring,Annotations,Spring Annotations,下面是组件接口的源代码 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Component { 对于Spring控制器,注释如下所示 @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Component public @interface Controlle

下面是组件接口的源代码

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Component {
对于Spring控制器,注释如下所示

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Controller {
为什么在控制器注释中添加@Component?它的目的是什么?如果我删除这行怎么办

我很清楚以下用于创建自定义注释的注释类型

@Documented Whether to put the annotation in Javadocs
@Retention  When the annotation is needed
@Target     Places the annotation can go    
@Inherited  Whether subclasses get the annotation

@Controller
是一个
@组件
(就像
@Service
@Repository
@Endpoint
等)

@Component在这里用作元注释,因此可以使用组件扫描来提取它。除此之外,@Controller是一个特殊的组件,它将具有一些附加功能(SpringMVC负责这一点)。如果删除@Component注释,组件扫描将无法再检测到它


您也可以创建自己的基于
@Component
的批注,只需创建自己的批注并将
@Component
放在上面。

@Component
(就像
@Service
@Repository
@Endpoint
等)

@Component在这里用作元注释,因此可以使用组件扫描来提取它。除此之外,@Controller是一个特殊的组件,它将具有一些附加功能(SpringMVC负责这一点)。如果删除@Component注释,组件扫描将无法再检测到它


您还可以创建自己的基于
@Component
的注释,只需创建自己的注释并将
@Component
放在注释上。

@Component
是任何Spring托管组件的通用原型<代码>@Repository
@Service
@Controller
@组件
的专门化,用于更具体的用例,例如,分别在持久层、服务层和表示层


Read

@Component
是任何Spring托管组件的通用原型<代码>@Repository、
@Service
@Controller
@组件
的专门化,用于更具体的用例,例如,分别在持久层、服务层和表示层


Read

@控制器
是一个
@组件
@组件
在这里用作元注释,因此可以使用组件扫描来提取它。
@Controller
是一个特殊的组件,它将具有一些附加功能。如果删除
@组件
注释,则组件扫描将不再检测到它。您还可以创建自己的基于
@Component
的注释。@M.Deinum:您应该将此作为答案。在这种情况下,组件扫描需要@Component。类似地,如果我们以其他一些自定义注释为例。其中也有一些参数,它将如何运行(与@Component这样的元注释一起使用)?一种选择是我们可以编写注释处理器来读取它。我的疑问是“有没有其他行为也会导致这种情况?”如果没有,那么在不编写注释处理器的情况下,它应该是毫无意义的
@Controller
是一个
@组件。
@组件
在这里用作元注释,因此可以使用组件扫描来提取它。
@Controller
是一个特殊的组件,它将具有一些附加功能。如果删除
@组件
注释,则组件扫描将不再检测到它。您还可以创建自己的基于
@Component
的注释。@M.Deinum:您应该将此作为答案。在这种情况下,组件扫描需要@Component。类似地,如果我们以其他一些自定义注释为例。其中也有一些参数,它将如何运行(与@Component这样的元注释一起使用)?一种选择是我们可以编写注释处理器来读取它。我的疑问是“有没有其他行为也会导致这种情况?”如果没有,那么在不编写注释处理器的情况下,它应该是没有意义的。在这种情况下,@Component需要进行组件扫描。类似地,如果我们以其他一些自定义注释为例。其中也有一些参数,它将如何运行(与@Component这样的元注释一起使用)?一种选择是我们可以编写注释处理器来读取它。我的疑问是“有没有其他行为也会导致这种情况?”如果没有,那么不编写注释处理器,它应该是毫无意义的。注释本身并不能起作用,需要有某种东西来处理它。注释只不过是元数据……在本例中,组件扫描需要@Component。类似地,如果我们以其他一些自定义注释为例。其中也有一些参数,它将如何运行(与@Component这样的元注释一起使用)?一种选择是我们可以编写注释处理器来读取它。我的疑问是“有没有其他行为也会导致这种情况?”如果没有,那么不编写注释处理器,它应该是毫无意义的。注释本身并不能起作用,需要有某种东西来处理它。注释只不过是元数据。。。