总览
Spring 2.5 以后,除了提供基本的 @Component
注解之外,还提供了 @Service
@Controller
@Repository
三个注解。在 Spring 源码中,后面三个注解都在开始部分引入了 @Component
注解,除此以外这四个注解的源码内容没有任何区别,因此后面的这三个注解与 Component 的作用是一样的。之所以要额外的引出这三个注解,是为了更好的与 Web 开发中常用的三层结构相对应。
Spring 源码中对于这四个注解的定义
// 四个注解的源码对比,此处省略了源码开头的 import 部分和注释部分
// 以下源码截取自 Spring 4.3.8 : org.springframework.stereotype 包下
// Component 源码定义
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Component {
String value() default ""