【发布时间】:2019-05-16 15:13:41
【问题描述】:
我有这样的代码:
存储库
@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 是一个接口,对吧?
【问题讨论】:
-
您的意思是 Spring Data JPA 是如何工作的?见stackoverflow.com/q/15571608/217324。 Repository 注释将其标记为组件并提供异常翻译,请参阅stackoverflow.com/q/12204035/217324
-
这里有点不同。 EquipmentRepository 是一个接口。那么,为什么我可以调用 EquipmentRepository 的方法。实现 EquipmentRepository 的类在哪里。
-
在这种情况下,
@Repository是无用的。因为它是 Spring Data JPA 检测Repository的扩展(接口而不是注释)以动态创建 JPA 实现。