在这个快速的文章中,我们将了解春季@Component,@Repository和@Service注释之间的区别。
在处理企业应用程序时,我们有多层或多模块架构,其中每个模块/层都有特定的角色。在基于春季的普通Web应用程序中,我们可以有以下层。
上面的列表是简单的列表,可以根据应用程序变得复杂。每一层都定义了自己的一组弹簧豆来执行工作。弹簧启动使用类路径扫描功能来检测这些 bean 并创建/加载它们。Spring框架提供了几个我可以根据用例使用的注释。在本文中,我们将仔细研究Spring框架中@Component,@Repository和@Service注释之间的区别。
在较高层面上,以下是这 3 个注释之间的区别:
注解 | 描述 |
@Component | 任何弹簧管理组件的通用构造型 |
@Repository | 持久层的构造型 |
@Service | 服务层的构造型 |
这些注释之间的主要区别在于分类,但最终它们几乎是相同的,我们可以使用一个来代替另一个,并且仍然可以按照我们的方式进行。
这是Spring框架提供的通用构造型注释。此注释表明该类是弹簧管理的 bean/ 组件。
- @Component
- public class ApplicationConfigurations{
- ...
- }
[拉引号对齐=“正常”]弹簧仅扫描而不查找 和 。发生这种情况是因为它们使用 本身注释这些其他注释。[/拉引号]@Component
@Service
@Repository
@Component
- @Component
- public @interface Service {
- ….
- }
- @Component
- public @interface Repository {
- ….
- }
换句话说,我们可以说 和 是特殊类型的注释。@Service
@Repository
@Component
此注释将弹簧豆分类为数据存储库。注释还会捕获特定于平台的异常,并重新抛出它们 特定于 Spring 的未选中异常。Spring提供了持久性例外翻译后处理器,类来处理这个问题。@Repository
org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor
此 Bean 后处理器将顾问程序添加到任何用 注释的 Bean 中。@Repository
用注释注释的 Java 类表明 Bean 是保存业务逻辑的服务层的一部分。此注释仅将 Bean 分类为服务级别 bean,并且没有像@Repository那样进行其他处理。@Service
在这篇简短的文章中,我们看到了春季@Component,@Repository和@Service注释之间的区别。我们讨论了每个注释以及我们应该使用这些注释的区域。最后,这些注记几乎相似,几乎没有其他功能,但它们可以帮助我们对Bean进行分类,并且根据图层约定选择注记总是更好。