
springboot3迁移指南
主要参考链接
Spring Boot 3.0 Migration Guide
Spring Boot 3.3 Releases Notes
Spring Integration 5.x to 6.0 Migration Guide
Spring Integration 6.2 to 6.3 Migration Guide
Spring Data 2024.0 Release Notes
Spring Btach 5.0 Migration Guide
注意事项
Java17或更高版本,而且需要Spring Framework 6.0
Jakarta EE现在使用jakarta包而不是javax,一些不是从jdk中引入的javax类要升级依赖。
JobRepository配置更新。基于Map的JobRepository(如MapJobRepositoryFactoryBean)已经从v5中删除,应该改用基于JDBC的实现,所以需要应用程序上下文中的DataSource bean。
throttleLimit方法弃用。
throttleLimit
方法用于设置并发执行的任务数量限制。在SpringBatch中,它通常用于控制多线程步骤中的并发性。具体来说,它限制了同时执行的线程数,以防过多的并发任务导致资源耗尽或性能问题。SpringBatch并发执行任务的数量跟throttleLimit和线程池大小(如setConcurrencyLimit)相关,去两者最小值。如果不设置throttleLimit,取默认值4。目前没有替代方案。JobBuilderFactory和StepBuilderFactory配置更新。JobBuilderFactory和StepBuilderFactory不再作为应用程序上下文中的bean公开,而且已在v5.2中弃用并删除。
从v4到v5的迁移示例
// Sample with v4
@Configuration
@EnableBatchProcessing
public class MyStepConfig {
@Autowired
private JobBuilderFactory jobs;
@Autowired
private StepBuilderFactory steps;
@Baen
public Job myJob(Step step){
return this.jobs.get("myJob")
.start(step)
.buiild();
}
@Bean
public Step myStep() {
return this.steps.get("myStep")
.tasklet(..) // or .chunk()
.build();
}
}
// Sample with v5
@Configuration
@EnableBatchProcessing
public class MyStepConfig {
@Bean
public Tasklet myTasklet() {
return new MyTasklet();
}
@Bean
public Job myJob(JobRepository jobRepository){
return new JobBuilder("myJob",jobRepository)
//......
.build();
}
@Bean
public Step myStep(JobRepository jobRepository, Tasklet myTasklet, PlatformTransactionManager transactionManager) {
return new StepBuilder("myStep", jobRepository)
.tasklet(myTasklet, transactionManager) // or .chunk(chunkSize, transactionManager)
.build();
}
}
- 感谢你赐予我前进的力量