主要参考链接

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

Hibernate 6.0 Migration Guide

Hibernate

Spring Data 2024.0 Release Notes

Spring Btach 5.0 Migration Guide

Java Driver Quick Start

注意事项

  1. Java17或更高版本,而且需要Spring Framework 6.0

  2. Jakarta EE现在使用jakarta包而不是javax,一些不是从jdk中引入的javax类要升级依赖。

  3. JobRepository配置更新。基于Map的JobRepository(如MapJobRepositoryFactoryBean)已经从v5中删除,应该改用基于JDBC的实现,所以需要应用程序上下文中的DataSource bean。

  4. throttleLimit方法弃用。 throttleLimit 方法用于设置并发执行的任务数量限制。在SpringBatch中,它通常用于控制多线程步骤中的并发性。具体来说,它限制了同时执行的线程数,以防过多的并发任务导致资源耗尽或性能问题。SpringBatch并发执行任务的数量跟throttleLimit和线程池大小(如setConcurrencyLimit)相关,去两者最小值。如果不设置throttleLimit,取默认值4。目前没有替代方案。

  5. 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();
    }

}