gpt4 book ai didi

java - java spring中的注释@Repository如何工作?

转载 作者:行者123 更新时间:2023-11-30 01:51:04 25 4
gpt4 key购买 nike

我有这样的代码:

存储库

@Repository
public interface EquipmentRepository extends JpaRepository<Equipment, Integer>{

Equipment findById(int id);
}

服务

@Service
public class EquipmentServiceImpl implements EquipmentService {

@Autowired
EquipmentRepository equipmentRepository;

@Override
public Equipment findById(int id) {
return equipmentRepository.findById(id);
}
}

我想知道为什么我可以调用“接口(interface) EquipmentRepository”的方法。 EquipmentRepository 是一个接口(interface),对吗?

最佳答案

Spring Repository 负责将 DAO 导入到 DI 容器中,并将未经检查的异常放入 Spring DataAccessException 。 Spring Repository 注解使用 @Component 注解进行元注解,以便存储库类将被用于组件扫描。

Teams implementing traditional Java EE patterns such as "Data Access Object" may also apply this stereotype to DAO classes, though care should be taken to understand the distinction between Data Access Object and DDD-style repositories before doing so. This annotation is a general-purpose stereotype and individual teams may narrow their semantics and use as appropriate.

A class thus annotated is eligible for Spring DataAccessException translation when used in conjunction with a PersistenceExceptionTranslationPostProcessor. The annotated class is also clarified as to its role in the overall application architecture for the purpose of tooling, aspects, etc.

Source: JavaDoc

但就您而言,您还扩展了 JpaRepository Spring Data JPA 的。 Spring Data 自动提供常见 CRUD 操作的实现。 JpaRepository扩展接口(interface)CrudRepository其中为所有基本增删改查操作声明了方法。

public interface EquipmentRepository extends JpaRepository<Account, Long> { … }

定义此接口(interface)有两个目的:

  • 首先,通过扩展 JpaRepository 我们得到了一堆通用的 CRUD方法进入我们的类型,允许保存设备,删除它们和等等。
  • 其次,这将允许 Spring Data JPA 存储库基础设施扫描该接口(interface)的类路径并为其创建一个 Spring bean它。

@EnableJpaRepositories扫描以下所有包 com.acme.repositories用于扩展接口(interface)JpaRepository并为其创建一个由 SimpleJpaRepository 的实现支持的 Spring bean (spring data 通过此类提供 CRUD 存储库的默认实现)。

这就是为什么即使您没有定义该方法,您也可以通过此设置进行增删改查操作。

引用:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.repositories

关于java - java spring中的注释@Repository如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56032969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com