16

我已经使用 Spring 框架开发了几年的 Web 应用程序。最近,我团队的一个新人问我一个问题,Spring 有@Component注解,注解的真正目的是@Repository什么@Service,,@Controller?我试图给他答案,它们之间没有区别,只是为了识别java Bean的类型。如你所知,我的解释缺乏说服力,他不买账。

所以我想问一个问题,注释的真正目的是什么@Repository,,?这些注释之间的真正区别是什么?@Service@Controller

4

1 回答 1

10

之前有人问过这个问题:Spring 中的@Component、@Repository 和@Service 注释有什么区别?

在 Spring 2.0 及更高版本中,@Repository 注释是任何满足存储库角色或原型(也称为数据访问对象或 DAO)的类的标记。此标记的用途之一是异常的自动翻译。

Spring 2.5 引入了更多的原型注解:@Component、@Service 和 @Controller。@Component 是任何 Spring 管理的组件的通用构造型。@Repository、@Service 和 @Controller 是 @Component 针对更具体的用例的特化,例如,分别在持久层、服务层和表示层中。

因此,您可以使用@Component 注释您的组件类,但是通过使用@Repository、@Service 或@Controller 来注释它们,您的类更适合工具处理或与方面关联。例如,这些原型注释是切入点的理想目标。

因此,如果您在服务层使用@Component 或@Service 之间进行选择,@Service 显然是更好的选择。同样,如上所述,@Repository 已被支持作为持久层中自动异常转换的标记。

于 2013-03-20T12:44:38.957 回答