![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring Batch
文章平均质量分 75
人……杰
这个作者很懒,什么都没留下…
展开
-
Spring Batch之读数据库—JdbcPagingItemReader(四十一)
Spring Batch之读数据库—JdbcPagingItemReader(四十一)原创 2023-07-19 15:13:59 · 1087 阅读 · 0 评论 -
Spring Batch之读数据库—StoredProcedureItemReader(四十)
Spring Batch之读数据库—StoredProcedureItemReader(四十)原创 2023-07-19 13:50:30 · 363 阅读 · 0 评论 -
Spring Batch之读数据库—HibernateCursorItemReader(三十九)
Spring Batch之读数据库—HibernateCursorItemReader(三十九)原创 2023-07-19 10:48:57 · 220 阅读 · 0 评论 -
Spring Batch之读数据库—JdbcCursorItemReader之自定义PreparedStatementSetter(三十八)
Spring Batch之读数据库——JdbcCursorItemReader之自定义PreparedStatementSetter(三十八)原创 2023-07-18 01:04:23 · 653 阅读 · 0 评论 -
Spring Batch之读数据库——JdbcCursorItemReader之自定义RowMapper(三十七)
Spring Batch之读数据库——JdbcCursorItemReader之自定义RowMapper(三十七)原创 2023-07-17 01:55:37 · 605 阅读 · 0 评论 -
Spring Batch之读数据库——JdbcCursorItemReader之使用框架提供的BeanPropertyRowMapper(三十六)
Spring Batch之读数据库——JdbcCursorItemReader之使用框架提供的BeanPropertyRowMapper(三十六)原创 2023-07-17 01:26:07 · 1143 阅读 · 0 评论 -
Spring Batch之读数据—读多文件(三十三)
Spring Batch之读数据—读多文件(三十三)原创 2023-07-16 01:12:13 · 1462 阅读 · 0 评论 -
Spring Batch之读数据—读XML文件(三十二)
Spring Batch之读数据—读XML文件(三十二)原创 2023-07-16 00:39:40 · 880 阅读 · 0 评论 -
Spring Batch之读数据—读带有头文件的文件(三十一)
一、项目实例1.项目框架2.代码实现BatchMain.java:package com.xj.demo26;import org.springframework.batch.core.Job;import org.springframework.batch.core.JobExecution;import org.springframework.batch.core.JobParameters;import org.springframework.batch.core.la原创 2022-03-11 09:50:09 · 806 阅读 · 0 评论 -
Spring Batch之读数据库——JdbcCursorItemReader(三十五)
一、JdbcCursorItemReader结构及关键属性JdbcCursorItemReader将数据库记录转换为Java对象时主要有两步工作:首先根据PreparedStatement从数据库中获取结果集ResultSet;然后使用RowMapper将结果集ResultSet转换为Java对象。二、关键接口、类和关键属性1.JdbcCursorItemReader关键接口、类关键类 说明 DataSource 提供读取数据库的数据源信息 PreparedState原创 2022-03-08 20:23:21 · 3980 阅读 · 1 评论 -
Spring Batch之读数据库(三十四)
一、Spring Batch框架对数据库的支持Spring Batch框架对数据库提供了非常好的支持,包括基于JDBC和ORM(Object-Relational Mapping)的读取方式;基于游标和分页的读取数据的ItemReader组件。1.Spring Batch框架提供的读数据库组件JdbcCursorItemReader 基于JDBC游标方式读数据库 HibernateCursorItemReader 基于Hibernate游标方式读数据库 Sto...原创 2022-03-07 09:27:30 · 1425 阅读 · 0 评论 -
Spring Batch之读数据—读混合记录文件(三十)
一、读混合记录文件Spring Batch之读数据—Flat格式文件(二十四)_人……杰的博客-CSDN博客_flat文件二、项目实例1.项目框架2.代码实现(1)BatchMain.javapackage com.xj.demo23;import org.springframework.batch.core.Job;import org.springframework.batch.core.JobExecution;import org.springframework原创 2022-03-04 08:50:25 · 232 阅读 · 0 评论 -
Spring Batch之读数据—读记录跨多行文件(二十九)
一、跨多行文件Spring Batch之读数据—Flat格式文件(二十四)_人……杰的博客-CSDN博客_flat文件二、项目实例1.项目框架2.代码实现(1)BatchMain.javapackage com.xj.demo22;import org.springframework.batch.core.Job;import org.springframework.batch.core.JobExecution;import org.springframework..原创 2022-03-03 09:12:53 · 537 阅读 · 0 评论 -
Spring Batch之读数据—读JSON文件(二十八)
一、JSON文件Spring Batch之读数据—Flat格式文件(二十四)_人……杰的博客-CSDN博客_flat文件二、项目实例1.项目框架2.代码实现(1)BatchMain.java:package com.xj.demo21;import org.springframework.batch.core.Job;import org.springframework.batch.core.JobExecution;import org.springframework原创 2022-03-02 09:26:51 · 519 阅读 · 0 评论 -
Spring Batch之读数据—读定长文件(二十七)
一、定长文件Spring Batch之读数据—Flat格式文件(二十四)_人……杰的博客-CSDN博客_flat文件二、项目实例1.项目框架2.代码实现(1)BatchMain.java:package com.xj.demo20;import org.springframework.batch.core.Job;import org.springframework.batch.core.JobExecution;import org.springframework..原创 2022-03-02 08:55:17 · 1011 阅读 · 0 评论 -
Spring Batch之读数据—读分隔符文件(二十六)
一、分隔符文件Spring Batch之读数据—Flat格式文件(二十四)_人……杰的博客-CSDN博客_flat文件二、项目实例1.项目框架2.代码实现(1)启动类BatchMain.java:package com.xj.demo19;import org.springframework.batch.core.Job;import org.springframework.batch.core.JobExecution;import org.springframewo原创 2022-03-02 08:26:11 · 779 阅读 · 0 评论 -
Spring Batch之读数据—FlatFileItemReader(二十五)
FlatFileItemReader实现ItemReader接口,核心作用将Flat文件中的记录转换为Java对象。一、FlatFileItemReader中关键属性属性 类型 说明 bufferedReaderFactory BufferedReaderFactory 根据给定的resource创建BufferReader实例,默认使用DefaultBufferedReaderFactory创建文本类型的BufferReader实例。 comments Str原创 2022-02-16 20:36:39 · 4883 阅读 · 3 评论 -
Spring Batch之读数据—Flat格式文件(二十四)
Flat类型文件是一种包含没有相对关系结构的记录的文件。在批处理应用中经常需要处理的文件是简单文本格式文件,这类文件通常没有复杂的关系结构,通常经过分隔符分割,或者定长字段来描述数据格式;稍复杂的文件通过JSON的方式定义数据格式。Spring Batch框架提供的ItemReader本质上是从Flat文件中读取记录,并将记录转换为Java中的对象。Flat文件格式有如下几种不同的类型:一、分隔符类型文件分隔符类型文件通常是根据设定的分隔符来区分一条记录...原创 2022-01-26 09:59:05 · 1939 阅读 · 0 评论 -
Spring Batch之读数据—ItemReader和ItemStream(二十三)
一、ItemReaderItemReader是Step中对资源的读处理,Spring Batch框架已经提供了各种类型的读实现,包括对文本文件、XML文件、数据库、JMS消息等读的处理。所有的读操作需要实现org.springframework.batch.item.ItemReader<T>接口。public interface ItemReader<T> { T read() throws Exception, UnexpectedInput...原创 2022-01-20 09:07:38 · 2326 阅读 · 2 评论 -
Spring Batch之拦截器汇总(二十二)
一、Job级拦截器Spring Batch之Job级拦截器实现(四)_人……杰的博客-CSDN博客二、Step级拦截器Spring Batch之Step级拦截器实现(十三)_人……杰的博客-CSDN博客三、ChunkListener主要操作:Chunk执行前、Chunk执行后。(1)实现接口方式:接口ChunkListener声明如下:public interface ChunkListener extends StepListener { void before原创 2022-01-11 20:24:07 · 1270 阅读 · 0 评论 -
Spring Batch之processor事务(二十一)
一、处理事务processor-transactional:处理数据是否在事务中,true表示在一次Chunk处理期间将processor处理的结果存放在缓存中,当执行重试或者跳过策略时可以看到缓存中处理的数据,在写操作完成之前可以重新执行processor;false表示在一次Chunk处理期间不会将processor处理的数据放在缓存中,即processor在Chunk执行期间每一条记录仅会执行一次。<batch:job id="transactionPolicyJob">原创 2022-01-09 17:18:18 · 2003 阅读 · 0 评论 -
Spring Batch之Chunk完成策略(二十)
Chunk的完成策略和Spring Batch框架提供的commit-interval功能类似,通过完成策略可以配置任务的提交时机,Chunk完成策略的定义接口为org.springframework.batch.repeat.CompletionPolicy.通过属性chunk-completion-policy定义批处理的完成策略。策略配置:<batch:job id="completionPolicyJob"> <batch:step id="c...原创 2022-01-07 09:19:33 · 3640 阅读 · 0 评论 -
Spring Batch之Step的重试(十九)
Step执行期间read、process、write发生的任何异常都会导致Step执行失败,进而导致作业的失败。处理任务阶段发生的异常可以让业务失败,也可以通过Skip的设置,跳过部分异常;但是另外还有部分异常,例如并发对数据库的操作导致的数据库锁的异常和网络不稳定导致的网络连接异常。这类异常的出现可能在下次重新操作的时候消失,数据库锁的异常在下次操作可能正确恢复,网络不能连接的异常可能在重试几次后恢复正常。因此,这些异常出现的时候,不期望作业发生异常,也不期望跳过处理,而是希望通过几次重试...原创 2022-01-06 19:48:25 · 1527 阅读 · 0 评论 -
Spring Batch之Step的异常跳过(十八)
设想的信用卡对账单的处理业务场景,银行每天需要处理海量的对账文件,如果对账文件中有少量的一行或者几行错误格式的记录,在真正进行业务处理的时候,不希望因为几行错误的记录而导致整个作业的失败;而是希望这几行没有处理的记录跳过去,让整个Job正确执行,对于错误的记录则通过日志的方式记录下来后续进行单独的处理。skippable-exception-classes:定义可以对记录跳过的异常,还可以定义跳过一组异常,如果发生了定义的异常或者子类异常都不会导致作业失败。 skip-limmit:任...原创 2021-12-28 10:32:27 · 2008 阅读 · 2 评论 -
Spring Batch之Step的提交间隔(十七)
批处理作业通常针对大数据量进行处理,同时框架需要将作业处理的状态实时地持久化到数据库中,如果读取一条记录就进行写操作或者状态数据的提交,会大量消耗系统资源,导致批处理框架性能下降。在面向批处理Chunk的操作中,可以通过属性commit-interval设置read多少条记录后进行一次提交。通过设置commit-interval的间隔值,减少提交频次,降低资源使用率。通过commit-interval设置Chunk的提交频次:<!--定义名字为billJob的作业--&g...原创 2021-12-23 09:21:18 · 1974 阅读 · 0 评论 -
Spring Batch之自定义Tasklet(十六)
元素tasklet中可以配置面向Chunk的任务,或者开发者实现自定义的Tasklet。两种都可以完成业务逻辑的配置。1.配置面向Chunk的任务方式<!--定义名字为billJob的作业--> <batch:job id="billJob"> <!--定义名字为billStep的作业步--> <batch:step id="billStep"> <batch:ta...原创 2021-12-23 08:40:32 · 734 阅读 · 0 评论 -
Spring Batch之多线程Step(十五)
Job执行默认情况使用单个线程完成任务。Spring Batch框架支持为Step配置多个线程,即可以使用多个线程并行执行一个Step,可以提高Step的处理速度。使用tasklet的属性为task-executor为Step定义多个线程。<!--定义名字为billJob2的作业,多线程--><batch:job id="billJob2"> <!--定义一个Step,继承parentStep--> <batch:step i...原创 2021-12-16 09:14:18 · 4127 阅读 · 2 评论 -
Spring Batch之配置Tasklet(十四)
一、重启StepSpring Batch框架支持状态为非“COMPELETED”的Job实例重新启动,Job实例重启的时候,会从当前失败的Step重新开始执行,同时可以通过start-limit属性控制任务启动的次数和allow-start-if-complete属性来决定已完成的任务是否可以重新启动。1.start-limit属性控制启动次数限制默认情况下,作业实例可以无限次地重复启动。在有些场景下需要限制作业实例的启动次数。<batch:step ...原创 2021-12-15 09:42:09 · 2360 阅读 · 0 评论 -
Spring Batch之Step级拦截器实现(十三)
一、拦截器实现说明1.拦截器的实现方式Spring Batch项目实现Step级拦截器有两种方法:(1)实现接口:org.springframework.batch.core.StepExecutionListenerpublic interface StepExecutionListener extends StepListener { //Step执行之前调用该方法 void beforeStep(StepExecution var1); /原创 2021-12-13 09:31:34 · 1193 阅读 · 0 评论 -
Spring Batch之作业步Step的抽象与继承(十二)
Spring Batch框架支持抽象的Step定义和Step的继承特性。通过定义抽象的Step可以将Step的共性进行抽取,形成父类的Step定义;然后各个具体的Step可以继承父类Step的特性,并定义自己的属性。一、抽象Step通过abstract属性可以指定Step为抽象的Step。抽象的Step不能被实例化,只能作为其他Step的父类。通常可以在抽象的Step中定义全局性的配置,供子类使用。<!--定义一个抽象的Step--><bat...原创 2021-12-12 17:26:13 · 725 阅读 · 0 评论 -
Spring Batch之Job与定时任务集成(十)
Spring Batch提供了Job的执行能力,其本身不是一个定时的调度框架,因此可以将定时调度框架和Spring Batch结合起来完成定时任务。Spring本身提供了一个轻量级的调度框架Spring scheduler。Spring scheduler使用非常简单,只需要完成2步即可完成简单的定时调度功能:(1)定义一个scheduler,给scheduler提供执行定时任务的线程。(2)定义需要定时操作的方法和调度周期。一、项目结构二、代码实现...原创 2021-12-09 20:01:57 · 2401 阅读 · 0 评论 -
Spring Batch之声明作业步Step的两种形式(十一)
Step表示作业中的一个完整步骤,一个Job可以由一个或者多个Step组成。Step的声明使用Step元素声明,每个Step由tasklet元素描述具体的作业,tasklet可以是一个自定义业务处理(需要实现接口org.springframework.batch.core.step.tasklet.Tasklet),也可以使用chunk元素描述面向块的业务处理,一个典型的chunk包含read、process和write三个操作。1.tasklet是一个自定义业务处理的声明方式 ...原创 2021-12-07 20:29:09 · 730 阅读 · 0 评论 -
Spring Batch之命令行执行Job(九)
Spring Batch提供通过命令行的方式执行Job的功能,通过命令行的方式可以在一个单独的JVM中执行批量处理作业。通过命令行的方式可以手动触发,也可以定义自动任务通过脚本的方式执行批处理作业。Spring Batch框架提供的命令行执行类:org.springframework.batch.core.launch.support.CommandLineJobRunner.CommandLineJobRunner参数说明如下:java -classpath “xxx” Comma...原创 2021-12-05 22:09:43 · 2171 阅读 · 0 评论 -
Spring Batch之Step Scope和Late Binding(七)
一、Step Scope什么是Scope(作用域、范围、生命周期)?Scope用户声明IOC容器中对象的存活空间,即在IOC容器在对象进入相应的Scope之前,生成并装配这些对象,在该对象不再处于这些Scope的限定范围之后,容器通常会销毁这些对象。Step Scope是Spring Batch框架提供了自定义的Scope,将Spring Bean定义为Step Scope,支持Spring Bean在Step开始的时候初始化,在Step结束的时候...原创 2021-12-05 20:29:35 · 1347 阅读 · 0 评论 -
Spring Batch之Job的异步执行(八)
JobLauncher支持对作业的同步、异步两种调用模式。默认情况下,JobLauncher的run操作通过同步方式调用Job,即任何调用Job的客户端需要等待Job的执行结果返回后才能结束。 现在可以通过异步调用模式,即调用Job的客户端无需一直等待Job执行结果,可以先返回,等过段时间来查询当前作业的执行情况。一、异步调用配置(1).配置一个线程池(2).为JobLauncher配置线程池二、项目举例1.项目架构2.代码实现Demo...原创 2021-11-29 08:56:22 · 1949 阅读 · 0 评论 -
Spring Batch之Job的抽象与继承(六)
Spring Batch框架支持抽象的Job定义和Job的继承特性。一、抽象的Job通过定义抽象的Job可以将Job的共性进行抽取,形成父类的Job定义,父Job通常具有较多的共性;然后各个具体的Job可以继承父类的Job特性,并定义自己的的属性。通过abstract属性可以指定Job为抽象的Job。抽象的Job不能被实例化,只能作为其他Job的父Job,其他Job可以继承父Job的所有特性,甚至可以复写掉父中的特性。 <!--定义抽象Job(父...原创 2021-11-17 09:33:20 · 714 阅读 · 0 评论 -
Spring Batch之Job Parameters校验(五)
Spring Batch框架提供了Job作业参数的校验功能,可以让开发者决定哪些参数是必须的,哪些参数是可选的。开发者可以自定义实现参数校验器,这需要实现接口:org.springframework.batch.core.JobParametersValidator,也可以使用框架已经提供的校验组件类。框架提供的校验组件类:CompositeJobParametersValidator DefaultJobParametersValidator项目实现举例:1.项目框架...原创 2021-11-11 18:27:53 · 1394 阅读 · 0 评论 -
Spring Batch之Job级拦截器实现(四)
一、拦截器实现说明1.拦截器实现的方式Spring Batch项目实现拦截器有两种方法:(1)实现接口:org.springframework.batch.core.JobExecutionListenerpublic interface JobExecutionListener { ///ob执行之前调用该方法 void beforeJob(JobExecution var1); //Job执行之后调用该方法 void afterJob(JobExecu原创 2021-11-08 20:30:56 · 816 阅读 · 0 评论 -
Spring Batch之配置DB Job Repository 项目举例(三)
一、项目创建步骤1.项目结构BatchMain.java:package com.xj.demo2;import org.springframework.batch.core.Job;import org.springframework.batch.core.JobExecution;import org.springframework.batch.core.JobParameters;import org.springframework.batch.core.launch.Jo原创 2021-11-07 21:13:22 · 1958 阅读 · 0 评论 -
Spring Batch之配置Job Repository的两种方式(二)
Job Repository来存储Job执行期的元数据,并提供两种默认实现。一种是存放在内存中,默认实现类为MapJobRepositoryFactoryBean;另一种是存入在数据库中。一、配置 Memory Job Repository <!--定义作业仓库 Job执行期间的元数据存储在内存中--> <bean id="jobRepository" class="org.springframework.batch.core.repository.support.原创 2021-11-07 20:21:13 · 2142 阅读 · 0 评论