java - Spring Batch 将处理后的记录写入文件

标签 java spring spring-batch

这是我之前的 question 的延续.由于原始问题已关闭
根据接受的答案,小任务 可以使用,我还尝试在面向块的步骤中实现自定义项目编写器,该步骤使用 jackson /JsonFileItemWriter ,我们可以使用它还是它对性能有任何影响?

public void write(final List<? extends Person> persons) throws Exception {
            
       for (Person  person: persons) {
            objectMapper.writeValue(new File("D:/cp/dataTwo.json"), person);
       }
            
}
问题一: “以上方法推荐吗?”
问题二: “我们可以在项目处理器本身中生成文件并使用无操作项目编写器吗?”
有人可以帮忙吗?

最佳答案

如果你看一下spring批处理框架,它包含三个步骤,如mentioned here ——
enter image description here
这意味着它将输入和输出分离为一个单独的操作。因此,如果您打算将写入和处理混合在一起,基本上是违反目的的,并且会引入紧密耦合,从长远来看可能会影响您的性能。 (把它想象成一个 map-reduce 操作。那些需要是互斥的,明确定义的输入和输出。)
现在,关于推荐的问题,是的。如果您使用的是 spring 批处理,这是处理记录的最佳方式,将它们分块读取,然后分块写入。通常批处理用于处理孤立的任务,以便到时候可以并行执行这些东西。因此,只要您不是同时修改同一个文件,就应该采用这种方法。

关于java - Spring Batch 将处理后的记录写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63159661/

相关文章:

java - JDO - 使用注释的 1-N 单向关系 - 列名称?

java - 我想知道如何转换Spring mvc Java配置环境

java - 在使用 Spring Batch 和 Spring Boot 时,如何始终为每次运行启动一个新的作业实例?

java - 如何实现 CrudRepository 的自定义方法?

java - Spring Batch 比较两个文件并找到匹配的记录

java - 其他 Android 开发者工具

java - 当我尝试将多个数据插入子表时出现错误无法执行 JDBC 批量更新

java - 如何在 Java 中将毫秒转换为 "X mins, x seconds"?

java - 自定义 Spring Data REST 生成的默认查询

java - 从spring bean名称获取类对象