赞
踩
Spring Batch是一种轻量级、全面的批处理框架,旨在支持开发健壮的批处理日常企业级系统。
Spring batch实现的特性包括数据验证、格式化输出、可重用、基于组块的处理、事务管理、声明式IO、基于Web的管理界面、可重启/重试。
Spring batch提供了处理大量记录的必不可少的高可用功能,包括日志追踪、事务管理、定时任务处理统计、定时任务重启、跳过,以及资源管理。它也提供了一些更高级的技术服务和特性,通过优化和分区技术使这些服务和特性可支持更高体量和性能的批处理工作。无论是简单的还是复杂的大容量批处理作业,都可以以高度可伸缩的方式利用该框架来处理大量信息。
springbatch架构有三层:应用层、核心层、基础设施层
springboot3+springbatch5的主要如下新特性
和springboot3的jdk版本一样,最少java17。
springbatch5的主要依赖升级这些:
<parent> <artifactId>spring-boot-starter-parent</artifactId> <groupId>org.springframework.boot</groupId> <version>3.1.0</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--数据库驱动--> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> <!--核心依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-batch</artifactId> </dependency> </dependencies>
在早期,Spring Batch提供了基于映射的作业存储库和作业浏览器实现使用内存中的作业存储库。这些实现在版本4中已弃用并在版本5中完全删除。建议使用基于jdbc的替换使用嵌入式数据库(如H2、HSQL等)实现。
在spring batch 5中,注解@EnableBatchProcessing配置一个基于jdbc的JobRepository,此配置是需要DataSource和PlatformTransactionManager两个spring bean。DataSource可依赖于外部数据库和引用嵌入式数据库来存储内存中的作业存储库。
@Configuration @EnableBatchProcessing public class BatchConfig { @Autowired private JobRepository jobRepository; @Autowired private PlatformTransactionManager platformTransactionManager; @Bean public Step step1() { return new StepBuilder("step1", jobRepository) .tasklet((contribution, chunkContext) -> { System.out.println(">>>>>>>>>>>>>>>>>>> hello world"); return RepeatStatus.FINISHED; }, platformTransactionManager ).build(); @Bean public Job helloJob(){ return new JobBuilder( "helloJob", jobRepository) .build(); } }
或者使用如下的
@Slf4j @Configuration public class BatchConfig extends DefaultBatchConfiguration { @Bean public Step step1(JobRepository jobRepository) { return new StepBuilder("step1", jobRepository) .tasklet((contribution, chunkContext) -> { System.out.println(">>>>>>>>>>>>>>>>>>> hello world"); return RepeatStatus.FINISHED; }, getTransactionManager() ).build(); } @Bean public Job helloJob(JobRepository jobRepository, Step step1){ return new JobBuilder( "helloJob", jobRepository) .start(step1) .build(); } }
Spring Batch 5 还删除了对 SQLFire、JSR-352(Java 平台的批处理应用)和 GemFire 的支持。
这个版本增加了对使用任何类型作为作业参数的支持,而不只是像v4中那样的4个预定义类型(long、double、字符串、日期)。此更改会影响作业参数在数据库中的保存方式(每个预定义类型不再有4个不同的列)。请检查BATCH_JOB_EXECUTION_PARAMS中的列更改以获取DDL更改。参数类型的完全限定名现在作为字符串以及参数值持久化。字符串文字可以通过标准的Spring转换服务转换为参数类型。标准转换服务可以丰富任何必需的转换器,以将用户特定的类型转换为字符串文字。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。