6.1.1 @Component和深层的构造型注解
@Repository注解是任何满足存储库的角色或构造型(为人知的有:数据访问对象或DAO)的类的标记。该标记的用途包括异常的自动转化,如第19.2.2节“异常转化”中所述。
Spring提供了深层的构造型注解:@ Component,@ Service和@Controller。 @Component是任何由Spring管理的组件的通用构造型。 @Repository、@ Service和@Controller是@Component的特殊化,用于更具体的用例,例如,分别在持久性,服务和表示层中。因此,您可以使用@Component注解组件类,但也可以通过使用@ Repository,@ Service或@Controller注解它们,这样您的类更适合通过工具去处理或与切面相关联。例如,这些构造型注解成为切入点的理想目标。在未来的Spring Framework版本中,@ Repository,@ Service和@Controller也可能带有额外的语义。因此,如果您选择在服务层使用@Component或@Service,@ Service显然是更好的选择。同样,如上所述,已经支持@Repository作为在持久层中自动异常转换的标记。