spring-boot - 春季批处理 - 处理器或作家?
问题描述
在我的 Spring boot 和 Spring 批处理应用程序中,我有一个这样的步骤:
@Bean
public Step step1() {
return stepBuilderFactory.get("step1").<FileInfo, FileInfo>chunk(10).reader(FileInfoItemReader).processor(processor()).writer(writer()).build();
}
我的作家是一个空的,如下所示:
public class BlankWriter<T> implements ItemWriter<T> {
@Override
public void write(List<? extends T> items) throws Exception {
}
}
现在,在我的处理器中,我有这个:
public class FileInfoItemProcessor implements ItemProcessor<FileInfo, FileInfo> {
.....
@Override
public FileInfo process(final FileInfo FileInfo) throws Exception {
myCustomStuff () {
......
}
}
public static void myCustomStuff() {
......
......
}
}
问题:由于所有对象都传递给处理器,我可以在处理器本身中处理它们,而不是使用任何转换等,并且由于我的目的通过使用处理器来解决,这是一个好习惯吗?或者我必须使用作家/定制作家来完成工作?
解决方案
我认为在编写器中进行 REST POST 调用比在处理器中进行调用更合适。REST POST 调用是一种对远程位置的写入操作。
因此,您可以省略处理器(因为它是可选的)并将该代码移动到项目编写器(而不是使用带有空write
方法的 NoOp 项目编写器)。
推荐阅读
- git - 分叉的仓库在 Github 上没有显示为分叉,找不到原始仓库了
- json - bash中的for循环选择构造jq
- javascript - React 如何在单击按钮后更改视图
- javascript - React:如何使用传单通过 fetch 调用将 geojson 映射到状态?
- node.js - 节点:VM12:1 POST http://localhost:3000/auth net::ERR_CONNECTION_REFUSED
- python - 如何在 keras.models Jupyter Python 中使用 model.fit() 方法进行深度 Q 倾向寻宝游戏
- php - 正则表达式的更好替代品
- javascript - 使用 FlatList 删除 AsyncStorage 中的项目
- python-3.x - 带约束的产品功能优化
- stackexchange.redis - Azure Function App 无法加载连接到 Redis 的 System.IO.Pipelines