Spring中的@Component,@Repository和@Service注释有什么区别?

问题:

可以在Spring中使用@Component@Repository@Service注释来交替使用它们,还可以提供任何特定的功能,除了作为符号设备吗?
换句话说,如果我有一个Service类,并且我将注释从@Service更改为@Component,它仍然会以同样的方式行事?
还是注释也会影响类的行为和功能?

回答:

Spring Documentation

在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已被支持作为持久层中自动异常转换的标记。

| Annotation | Meaning                                             |
+------------+-----------------------------------------------------+
| @Component | generic stereotype for any Spring-managed component |
| @Repository| stereotype for persistence layer                    |
| @Service   | stereotype for service layer                        |
| @Controller| stereotype for presentation layer (spring-mvc)      |

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: What’s the difference between @Component, @Repository & @Service annotations in Spring?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 4 = 11