我有一个批处理,它使用jdbcpagingitemreader从数据库中读取数据,在java类中处理数据库中的每条记录,然后使用flatfileitemwriter将其写入文件。它还使用 FlatFileFooterCallback
以及 FlatFileHeaderCallback
该作业运行良好,并作为输出提供以下格式的单个json文件:
{"informations":[
{
"name" : "xxx",
"adress" : "xxx"
//a very complex json object (1000 lines)
},
{
"name" : "xxx",
"adress" : "xxx"
//a very complex json object (1000 lines )
},
// Many objects
]}
请注意标题如下:
{"informations":[
页脚只是
]}
现在文件太大了,我想用 MultiResourceItemWriter
每个文件最多从数据库中读取1000行。
所以我配置了这个步骤,我使用了上面的第一个flatfileitemwriter,这个工作很好。因此,我有许多文件有1000条来自数据库的记录,但没有页眉和页脚 {"informations":[
以及 ]}
multiresourceitemwriter生成的所有文件都具有以下格式:
{
"name" : "xxx",
"adress" : "xxx"
a very complex json object (1000 lines)
},
{
"name" : "xxx",
"adress" : "xxx"
a very complex json object (1000 lines )
},
{
// many objects
}
如何为创建的所有文件添加页眉和页脚 MultiResourceItemWriter
写作的时候。
我发现一个答案是,我们不能将multiresourceitemwriter与具有 FlatFileFooterCallback
以及 FlatFileHeaderCallback
Spring批版本<2.1。
将multiresourceitemwriter和flatfileitemwriter与页脚回调和堆栈溢出相结合时出现流关闭异常
我有个例外 java.lang.IllegalStateException: JsonWriter is closed
当你试图 Package 的时候 FlatFileItemWriter
与 FlatFileHeaderCallback
在我的期末考试中 MultiResourceItemWriter
作家。
那么,有没有一种方法可以为创建的所有文件指定页眉和页脚 MultiResourceItemWriter
写入新文件时(拆分为多个文件)?有没有一种方法可以定义文件的模板 MultiResourceItemWriter
写进去?
如果没有,你能指导我这样做吗?
我想在最后,所有由multiresourceitemwriter创建的文件都在开头 {"informations":[
最后呢 ]}
,所有文件内容都 Package 在json数组中 informations
.
提前谢谢
1条答案
按热度按时间gijlo24d1#
如何在编写时为multiresourceitemwriter创建的所有文件添加页眉和页脚。
您需要在代理编写器上设置页眉/页脚回调。下面是一个简单的例子:
这将生成两个文件
items-1.txt
以及items-2.txt
包括以下内容:和
我使用springbatchversion3.0.10.release
此版本不再维护,因此我建议您升级到最新和最棒的v4.3.1。上面的示例使用springbatchv4.3.1并按预期工作。