这里将 Sterotype 翻译为 原型

    @Repository 注解是任何满足存储库(也被称为数据访问对象或 DAO)角色或定型的类的标记。这个标记的用途包括异常的自动翻译(就是将原始的异常转换为 @Repository 中定义的一些异常),如 异常翻译 中所述。

    Spring 提供了更多的原型注解。@Component, @Service, 和 @Controller@Component是一个通用的原型注解,适用于任何 Spring 管理的组件。@Repository@Service@Controller@Component的特殊化,用于更具体的使用情况(分别在持久层、服务层和表现层)。因此,你可以用 @Component来注解你的组件类,但是,通过用 @Repository@Service@Controller来注解它们,你的类更适合于被工具处理或与代理关联。例如,这些原型注解是指向性的理想目标。在 Spring 框架的未来版本中,@Repository@Service@Controller还可以携带额外的语义。因此,如果你要在服务层使用 @Component@Service之间进行选择,@Service显然是更好的选择。同样地,如前所述,@Repository已经被支持作为持久层中自动异常翻译的标记。