Java Spring数据直接自动连接存储库接口

Java Spring数据直接自动连接存储库接口,java,spring-data-jpa,Java,Spring Data Jpa,我不熟悉Spring数据,我想知道这样直接自动连接存储库是否正确(假设不需要更多方法),因为Spring 4可以解决通用自动连接: @Autowired CrudRepository<User,Long> repo; @Autowired 积存式回购; 有不止一个bean实现了这个接口(SimpleParepository、QueryDslJpaRepository),所以Spring无法解决自动连接问题,不是吗 但如果你这样做: public interface MyRepo

我不熟悉Spring数据,我想知道这样直接自动连接存储库是否正确(假设不需要更多方法),因为Spring 4可以解决通用自动连接:

@Autowired
CrudRepository<User,Long> repo;
@Autowired
积存式回购;
有不止一个bean实现了这个接口(SimpleParepository、QueryDslJpaRepository),所以Spring无法解决自动连接问题,不是吗

但如果你这样做:

public interface MyRepo extends CrudRepository<User,Long> () {
}
公共接口MyRepo扩展了Crudepository(){
}
实现的autowire是什么


谢谢。

我不知道你是否能自动连线
积存回购直接,我想这可能行得通。试试看

通常,您通过定义一个类似于

public interface MyRepo extends CrudRepository<User,Long> () {
}
魔术是Spring数据然后为您实现接口。您将自动连接该实现,并且您的代码将保持对所使用数据库的实现细节的清理

有不止一个bean实现了这个接口(SimpleParepository、QueryDslJpaRepository),所以Spring无法解决自动连接问题,不是吗

在常规情况下也必须这样做。在某些地方有一些规则和配置,这些规则和配置将决定在您想要的接口有多个候选接口的情况下选择哪个实现

如果使用
simpleparepository
vs
QueryDslJpaRepository
,则可能归结为您是否使用了额外的功能。后者的文件是

SimpleParepository的QueryDsl特定扩展,它添加了QueryDsl谓词执行器的实现


如果您不想要继承
QueryDSLDPredicateExecutor
的类型,则不需要将magic实现建立在该类的基础上。

我猜这里的问题是无法实现,但这是关于良好实践的。MVC模式由不同的层组成,如果您的DAO使用MySQL、MSSQL或WhateverQL,那么其他层不应该知道它,因为这对他们来说无关紧要。拥有一个可以持久化、选择和更新泛型对象的抽象泛型类,以及一个用于声明方法的接口,这是一个很好的实践+1关于
的详细解释,通常您声明希望为用户创建一个存储库
,事实上
crudepository repo
无法解决,我想因为Spring数据JPA是在Spring泛型类支持之前构建的,所以必须实现接口。@EstebanS hm,即使使用类型擦除,似乎也可以自动连接正确的泛型类型。所以可能就是这样。
@Autowired
MyRepo repo;