深入解析SpringBatch适配器
一、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适配器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java结构型设计模式之组合模式Composite Pattern详解
组合模式,又叫部分整体模式,它创建了对象组的数据结构组合模式使得用户对单个对象和组合对象的访问具有一致性。本文将通过示例为大家详细介绍一下组合模式,需要的可以参考一下2022-11-11@Autowired注解注入的xxxMapper报错问题及解决
这篇文章主要介绍了@Autowired注解注入的xxxMapper报错问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-11-11IDEA 使用mybatis插件Free Mybatis plugin的步骤(推荐)
这篇文章主要介绍了IDEA 使用mybatis插件Free Mybatis plugin的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-12-12
最新评论