欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringBatch适配器详解

程序员文章站 2022-03-07 11:36:00
目录一、springbatch适配器二、springbatch适配器实战(tasklet举例)一、springbatch适配器1、springbatch分别有读(reader)、处理(processo...

一、springbatch适配器

1、springbatch分别有读(reader)、处理(processor)、写(writer)、tasklet处理器。

  • 读适配器:itemreaderadapter
  • 处理适配器:itemprocessoradapter
  • 写适配器:itemwriteradapter
  • tasklet适配器:methodinvokingtaskletadapter

2、springbatch之所以给我们开这么多适配器原因是让我们把既有的服务作为参数传到适配器里面,避免开发重复代码。不得不说springbatch开发人员想的真周到。

3、springbatch适配器都有三个公共的方法:

  • public object targetobject (目标对象,将要调用的实例)
  • public string targetmethod(目标方法,将要在实例上调用的方法)
  • public object[] arguments(配置选型,用于提供一组数组类型参数)

二、springbatch适配器实战(tasklet举例)

演示methodinvokingtaskletadapter适配器

1、创建job配置taskletadapterconfiguration

@configuration
@enablebatchprocessing
public class taskletadapterconfiguration {
 
    @autowired
    private jobbuilderfactory jobbuilderfactory;
 
    @autowired
    private stepbuilderfactory stepbuilderfactory;
 
    @autowired
    public peopleservice peopleservice;
 
    @bean
    public job taskletadapterjob() {
        return jobbuilderfactory.get("taskletadapterjob")
                .start(taskletadapterstep())
                .build();
    }
 
    @bean
    public step taskletadapterstep() {
        return stepbuilderfactory.get("taskletadapterstep")
                .tasklet(methodinvokingtaskletadapter())
                .build();
    }
 
    @bean
    public methodinvokingtaskletadapter methodinvokingtaskletadapter() {
        methodinvokingtaskletadapter adapter = new methodinvokingtaskletadapter();
        adapter.settargetobject(peopleservice);
        adapter.settargetmethod("uppercase");
        adapter.setarguments(new object[]{new people("lee","10","北京","1233")});
        return adapter;
    }
 
}

2、tasklet适配器执行的目标类和方法

@service
public class peopleservice {
 
    public people uppercase(people people) {
         people p = new people();
         p.setname(people.getname().touppercase(locale.root));
         p.setadress(people.getadress().touppercase(locale.root));
         p.setage(people.getage());
         p.setidcard(people.getidcard());
        system.out.println("p:" + p);
         return p;
    }
}

3、适配器执行目标方法一定要先看看有没有参数,如果有参数一定要把此方法(setarguments)设置上,否则会报"no matching arguments found for method"异常

4、执行结果如图所示:

SpringBatch适配器详解

到此这篇关于springbatch适配器详解的文章就介绍到这了,更多相关springbatch适配器内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!