如何使用 SpringBatch 将接口添加到 ItemProcessor 的构造函数中

问题描述 投票:0回答:1

在我的java项目中,我使用六边形架构。 我有一个名为 RUseCase 的接口“用例”,它由名为“RService”的服务实现。

在我的 Spring Batch 步骤的 ItemProcessor 中,我需要调用我的接口“RUseCase”,因此在我的 Processor 中,我将接口放入构造函数中,这要归功于注释RequiredArgsConstructor。但是当我尝试将接口放入处理器的参数时出现错误。

我在文档中没有看到如何执行此操作。您有什么想法吗?

在我的处理器声明中:

  @Bean
  public ItemProcessor<PSSEntity, PLEntity> rProcessor() {
    return new RProcessor(); <-- Error here
  }

R处理器:

@Slf4j
@RequiredArgsConstructor
public class RProcessor implements ItemProcessor<PSSEntity, PLEntity> {

  private final RUseCase rUseCase;


  @Override
  public PLEntity process(PSSEntity item) {
    log.trace("Traitement d'une entrée PSSEntity: {}", item);

    List<PL> pL = this.rUseCase.findR(item.getP());
    return new PLEntity();
  }
}

当我尝试将 RUseCase 放入 BatchConfiguration 的构造函数中并且如果我像这样声明 bean 时:

  @Bean
  public RUseCase rUseCase(RUseCase rUseCase) {
    return rUseCase;
  }

我收到一个错误:应用程序上下文中某些bean的依赖关系形成了一个循环:

java spring-batch hexagonal-architecture
1个回答
1
投票

你的

RapprochementProcessor
需要一个
RapprochementUseCase
,你应该有一个由
@RequiredArgsConstructor
生成的构造函数。

您需要声明一个

RapprochementUseCase
类型的 bean,然后将其传递给您的项目处理器,如下所示:

@Bean
public ItemProcessor<PlaqueSousSurveillanceEntity, PlaqueLueEntity> rapprochementProcessor(RapprochementUseCase rapprochementUseCase) {
    return new RapprochementProcessor(rapprochementUseCase);
}
© www.soinside.com 2019 - 2024. All rights reserved.