这里将 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
已经被支持作为持久层中自动异常翻译的标记。