@Controller
、@Service
、@Repository
都有带@Component
父注解,四个注解都可以说成是Component级别的注解,Spring框架自动扫描的注解也是检测是否有Component注解标记。把普通pojo实例化到spring容器中,相当于配置文件中的。这三个注解它们除了@Component
的属性外还有其他的的场景应用。
@Component
:这将 java 类标记为 bean。它是任何 Spring 管理组件的通用构造型。spring 的组件扫描机制现在可以将其拾取并将其拉入应用程序环境中。@Controller
:这将一个类标记为 SpringWeb MVC 控制器。标有它的Bean 会自动导入到 IoC 容器中。@Service
:此注解是组件注解的特化。它不会对@Component
注解提供任何其他行为。您可以在服务层类中使用@Service
而不是@Component
,因为它以更好的方式指定了意图。@Repository
:这个注解是具有类似用途和功能的 @Component 注解的特化。它为 DAO 提供了额外的好处。它将 DAO 导入 IoC 容器,并使未经检查的异常有资格转换为 Spring DataAccessException。