如何解决Spring Batch中JobBuilderFactory与StepBuilderFactory的弃用警告及报错
解决Spring Batch 5.x弃用警告与依赖注入错误
一、处理JobBuilderFactory/StepBuilderFactory弃用警告
Spring Batch 5.0及以上版本中,JobBuilderFactory和StepBuilderFactory已被标记为弃用,官方推荐直接通过JobRepository和PlatformTransactionManager构建Job与Step,替代方案如下:
修改代码示例
// 替换原工厂类注入 @Autowired private JobRepository jobRepository; @Autowired private PlatformTransactionManager transactionManager; @Bean public Step step1() { return new StepBuilder("csv-step", jobRepository) .<MSTabcNEUser, MSTabcNEUser>chunk(10, transactionManager) .reader(reader()) .processor(processor()) .writer(writer()) .taskExecutor(taskExecutor()) .build(); } @Bean public Job runJob() { return new JobBuilder("MSTabcNEUser", jobRepository) .flow(step1()) .end() .build(); }
核心变更:
- 移除
JobBuilderFactory和StepBuilderFactory的依赖注入 - 使用
StepBuilder和JobBuilder的构造方法,传入jobRepository和transactionManager完成构建
二、解决JdbcBatchItemWriter依赖缺失错误
错误提示No qualifying bean of type 'org.springframework.batch.item.database.JdbcBatchItemWriter<MSTAuraQuanticNEUser>' available,本质是Spring容器中不存在符合要求的Writer Bean,解决步骤:
- 将writer()方法声明为Spring Bean:给
writer()添加@Bean注解,确保Spring能扫描并管理该实例 - 匹配泛型与返回类型:确保方法返回类型为
JdbcBatchItemWriter<MSTAuraQuanticNEUser>,与实体类泛型一致
示例Writer Bean配置
@Bean public JdbcBatchItemWriter<MSTAuraQuanticNEUser> writer(DataSource dataSource) { JdbcBatchItemWriter<MSTAuraQuanticNEUser> writer = new JdbcBatchItemWriter<>(); // 使用实体类属性自动映射SQL参数 writer.setItemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider<>()); // 替换为你的实际插入SQL语句 writer.setSql("INSERT INTO mst_aura_quantic_ne_user (user_id, user_name) VALUES (:userId, :userName)"); writer.setDataSource(dataSource); return writer; }
额外注意:如果你的reader()和processor()方法未声明为@Bean,也需要添加该注解,保证Step能正常注入这些依赖。
内容的提问来源于stack exchange,提问作者Kumar Sourav
相关产品推荐
相关产品推荐

