1

下面是 For Component Interface 的源代码

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Component {

对于 Spring Controller 注释如下

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Controller {

为什么在 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
4

2 回答 2

4

@Controller是一个@Component(就像@Service,@Repository@Endpoint)。

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

您还可以@Component通过简单地创建自己的注释并添加@Component它来创建自己的基于注释。

于 2013-11-11T17:18:40.670 回答
1

@Component是任何 Spring 管理的组件的通用构造型。@Repository@Service@Controller@Component针对更具体用例的专门化,例如,分别在持久层、服务层和表示层中。

阅读此答案

于 2013-11-12T06:00:00.890 回答