Spring batch 如何在不同的作业配置上实现抽象级别?

Spring batch 如何在不同的作业配置上实现抽象级别?,spring-batch,Spring Batch,在我的申请上有同样的问题。一个批处理作业可以正常工作,但如果我尝试添加另一个必需的类并实现抽象方法来公开它们以便在父级AbstractFileLoader中进行组装,应用程序会抱怨无法自动连接类型为FieldSetMapper的bean,这与正在工作的bean完全相同,我不知道为什么?!尽管定义的类具有@组件注释 FieldSetMapper:- @Component("accountFieldSetMapper") public class AccountFieldSetMapper impl

在我的申请上有同样的问题。一个批处理作业可以正常工作,但如果我尝试添加另一个必需的类并实现抽象方法来公开它们以便在父级
AbstractFileLoader
中进行组装,应用程序会抱怨无法自动连接类型为
FieldSetMapper
的bean,这与正在工作的bean完全相同,我不知道为什么?!尽管定义的类具有
@组件
注释

FieldSetMapper:-

@Component("accountFieldSetMapper")
public class AccountFieldSetMapper implements FieldSetMapper<Account>{

    @Override
    public Account mapFieldSet(FieldSet fieldSet) throws BindException {
        Account account= new Account();
        account.setId(fieldSet.readString("id"));
        account.setBalance(fieldSet.readDouble("balance"));
        return account;
    }

}

更新:作业配置

@Configuration
public abstract class GeneralConfig implements BatchConfigurer {

    @Autowired
    JobBuilderFactory jobBuilderFactory;

    @Autowired
    StepBuilderFactory stepBuilderFactory;

    @Autowired
    DataSource datasource;

    @Autowired
    PlatformTransactionManager platformTransactionManager;

    @Bean
    public Step batchStep(String stepName) {
        return stepBuilderFactory.get(stepName)
                .<~>chunk(10)
                .faultTolerant()                                               
                .skipLimit(100)
                .reader(reader(null))
                .processor(processor())
                .writer(writer(null))
                .build();
    }

    @Bean
    public Job batchJob(String jobName) {
        return jobBuilderFactory.get(jobName).start(batchStep(jobName)).build();
    }

}
应用程序上下文:

@SpringBootApplication
@EnableBatchProcessing
public class BatchApplication {

    public static void main(String[] args) {        
        SpringApplication.run(BatchApplication.class, args);

    }

请共享堆栈跟踪和源代码。我认为spring无法为您的第二批作业设置上下文。你能展示一下你是如何配置它的吗?@IgorKonoplyanko它的配置与第一个配置相同,它们都是在父级
GeneralConfig
中配置的,每个人都提供了它的抽象方法,因此如果父级出现问题,第一个就不起作用了!我的意思是如何配置第一个和第二个作业。应通过“@SpringBootApplication”配置或手动启动。无论如何,它与spring批处理无关,而是与spring有关/SpringBoot@IgorKonoplyanko我已经更新了问题。现在我得到了一个不同的错误,因为我有一个abstract
GeneralConfig
扩展了
BatchConfigurer
所有子级扩展了
GeneralConfig
@Configuration
public abstract class GeneralConfig implements BatchConfigurer {

    @Autowired
    JobBuilderFactory jobBuilderFactory;

    @Autowired
    StepBuilderFactory stepBuilderFactory;

    @Autowired
    DataSource datasource;

    @Autowired
    PlatformTransactionManager platformTransactionManager;

    @Bean
    public Step batchStep(String stepName) {
        return stepBuilderFactory.get(stepName)
                .<~>chunk(10)
                .faultTolerant()                                               
                .skipLimit(100)
                .reader(reader(null))
                .processor(processor())
                .writer(writer(null))
                .build();
    }

    @Bean
    public Job batchJob(String jobName) {
        return jobBuilderFactory.get(jobName).start(batchStep(jobName)).build();
    }

}
Job currentJob = appContext.getBean(jobName, Job.class);
jobLauncher.run(currentJob , jobParams);
@SpringBootApplication
@EnableBatchProcessing
public class BatchApplication {

    public static void main(String[] args) {        
        SpringApplication.run(BatchApplication.class, args);

    }