Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring Autowire在泛型类中找不到R2DBC存储库的实现 @服务 公共抽象类基服务{ @自动连线 受保护的R库; 公开摘要(E实体); 公开摘要转换实体(D DTO); 公共流量findAll(){ 返回repository.findAll().map(this::convertto); } 公共Mono findById(字符串id){ 返回repository.findById(id).map(this::convertto); } 公共单声道创建(D DTO){ 返回repository.insert(convertToEntity(DTO)).map(this::converttoto); } 公共单声道更新(D DTO){ 返回repository.save(convertToEntity(DTO)).map(this::converttoto); } 公共单声道删除(D DTO){ 返回repository.delete(convertToEntity(DTO)); } }_Java_Spring_Spring Boot_Spring Data Jpa_Spring Data R2dbc - Fatal编程技术网

Java Spring Autowire在泛型类中找不到R2DBC存储库的实现 @服务 公共抽象类基服务{ @自动连线 受保护的R库; 公开摘要(E实体); 公开摘要转换实体(D DTO); 公共流量findAll(){ 返回repository.findAll().map(this::convertto); } 公共Mono findById(字符串id){ 返回repository.findById(id).map(this::convertto); } 公共单声道创建(D DTO){ 返回repository.insert(convertToEntity(DTO)).map(this::converttoto); } 公共单声道更新(D DTO){ 返回repository.save(convertToEntity(DTO)).map(this::converttoto); } 公共单声道删除(D DTO){ 返回repository.delete(convertToEntity(DTO)); } }

Java Spring Autowire在泛型类中找不到R2DBC存储库的实现 @服务 公共抽象类基服务{ @自动连线 受保护的R库; 公开摘要(E实体); 公开摘要转换实体(D DTO); 公共流量findAll(){ 返回repository.findAll().map(this::convertto); } 公共Mono findById(字符串id){ 返回repository.findById(id).map(this::convertto); } 公共单声道创建(D DTO){ 返回repository.insert(convertToEntity(DTO)).map(this::converttoto); } 公共单声道更新(D DTO){ 返回repository.save(convertToEntity(DTO)).map(this::converttoto); } 公共单声道删除(D DTO){ 返回repository.delete(convertToEntity(DTO)); } },java,spring,spring-boot,spring-data-jpa,spring-data-r2dbc,Java,Spring,Spring Boot,Spring Data Jpa,Spring Data R2dbc,我将上面的类作为一个抽象类,我的所有基本服务类都将从中继承 @服务 公共类ClusterService扩展了BaseService{ @自动连线 模型映射器模型映射器; @凌驾 public ClusterDTO Convertto(ClusterEntity){ 返回modelMapper.map(entity,ClusterDTO.class); } @凌驾 公共群集实体转换为实体(群集到DTO){ 返回modelMapper.map(DTO,ClusterEntity.class); }

我将上面的类作为一个抽象类,我的所有基本服务类都将从中继承


@服务
公共类ClusterService扩展了BaseService{
@自动连线
模型映射器模型映射器;
@凌驾
public ClusterDTO Convertto(ClusterEntity){
返回modelMapper.map(entity,ClusterDTO.class);
}
@凌驾
公共群集实体转换为实体(群集到DTO){
返回modelMapper.map(DTO,ClusterEntity.class);
}
}
这是我的服务课


@菜豆
公共接口IChanakyaR2dbcRepository扩展了ReactiveCrudepository{
/**
*插入给定实体。使用返回的实例进行进一步操作,因为保存操作可能已更改
*完整的实体实例。
*
*@param实体不能为{@literal null}。
*@return{@link Mono}发出插入的实体。
*@在给定的{@literal entity}为{@literal null}的情况下抛出IllegalArgumentException。
*/
Mono insert(S实体);
}
这是我的存储库类


@Slf4j
@事务(只读=真)
公共类ChanakyaR2dbcRepository扩展了SimpleR2dbcRepository{
私人最终关系实体信息实体;
专用最终数据库客户端数据库客户端;
专用最终R2DBC转换器转换器;
私有最终反应数据访问策略;
public ChanakyaR2dbcRepository(关系实体信息实体、数据库客户端数据库客户端、R2DBC转换器转换器、反应数据访问策略){
super(实体、数据库客户端、转换器、访问策略);
this.entity=实体;
this.databaseClient=databaseClient;
这个。转换器=转换器;
this.accessStrategy=accessStrategy;
}
@交易的
公共Mono插入(S对象保存){
Assert.notNull(objectToSave,“要插入的对象不能为null!”);
试一试{
返回此.databaseClient.insert()
.into(this.entity.getJavaType())
.table(this.entity.getTableName())。使用(objectToSave)
.map(此.converter.populatedifnecessary(objectToSave))
.first()
.defaultIfEmpty(objectToSave);
}捕获(DataIntegrityViolationException diex){
String errMsg=String.format(“数据库中已存在实体{}”,this.Entity);
日志错误(errMsg,diex);
返回Mono.error(新的非法状态异常(errMsg));
}
}
}
这是我的存储库实现

当我运行应用程序时,会出现以下错误

org.springframework.beans.factory.UnsatifiedPendencyException:创建名为“clusterService”的bean时出错:通过字段“repository”表示未满足的依赖关系; 嵌套异常是

org.springframework.beans.factory.noSuchBean定义异常:否 类型的限定bean “com.appdynamics.sum.chanakya.repository.base.IChanakyaR2dbcRepository”可用:至少需要1个符合条件的bean 作为自动连线的候选者。依赖项批注: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

上面的autowire不起作用,但是当我直接(而不是通过泛型类型)在另一个componenet中autowire
IChanakyaR2dbcRepository
时。它很好用

做这种事的正确方法是什么?我想要BaseService实现

我知道,如果您创建一个扩展
IChanakyaR2dbcRepository
的接口,并将该类作为泛型类型传递给
BaseService
,那么它将正常工作。但这意味着为我拥有的每个实体创建这样的空类,这不是一个理想的解决方案

您应该尝试以下方法:

@EnableR2dbcRepositories(basePackages = {"your.repository.package"}, 
basePackageClasses = {}) 

问题在于springboot不知道在哪里可以找到这个自定义类型
r2dbc
repository

您不需要为接口本身声明一个实现,除非您绝对想要自定义crud之外的东西