深入解析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适配器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
空指针HttpSession异常之SpringBoot集成WebSocket的方法
文章介绍了在Spring Boot中集成WebSocket时遇到的HttpSession为空的问题,并探讨了三种解决方法,方法一涉及域名配置,方法二通过监听创建Session,而方法三是从request中获取session并存入数据,感兴趣的朋友一起看看吧2025-01-01
JAVA三种拦截方式详解(原生过滤器Filter、springMVC拦截器、aop切面)
在Java开发中方法拦截是一种常见的技术,可以用于在方法执行前后添加额外的逻辑或修改方法的行为,这篇文章主要给大家介绍了关于JAVA三种拦截方式的相关资料,文中介绍的方式分别是原生过滤器Filter、springMVC拦截器、aop切面,需要的朋友可以参考下2024-05-05


最新评论