在我的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的依赖关系形成了一个循环:
你的
RapprochementProcessor
需要一个RapprochementUseCase
,你应该有一个由@RequiredArgsConstructor
生成的构造函数。
您需要声明一个
RapprochementUseCase
类型的 bean,然后将其传递给您的项目处理器,如下所示:
@Bean
public ItemProcessor<PlaqueSousSurveillanceEntity, PlaqueLueEntity> rapprochementProcessor(RapprochementUseCase rapprochementUseCase) {
return new RapprochementProcessor(rapprochementUseCase);
}