以下是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
答案 0 :(得分:4)
@Controller
是@Component
(就像@Service
,@Repository
,@Endpoint
等。
@Component在这里用作元注释,以便可以使用组件扫描来拾取它。接下来,@ Controller是一个特殊组件,它将具有一些附加功能(Spring MVC负责这一点)。如果删除@Component注释组件,扫描将无法再检测到它。
您还可以通过创建自己的注释并在其上添加@Component
来创建自己的基于@Component
的注释。
答案 1 :(得分:1)
@Component
是任何Spring管理组件的通用构造型。对于更具体的用例,@Repository
,@Service
和@Controller
是@Component
的特化,例如,分别在持久性,服务和表示层中。