У меня есть пакет, который читает из базы данных с помощью 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 с FlatFileItemWriter, у которых есть FlatFileFooterCallback
и FlatFileHeaderCallback
с весенней пакетной версией ‹2.1.
Исключение закрытия потока при объединении MultiResourceItemWriter и FlatFileItemWriter с обратным вызовом нижнего колонтитула и переполнением стека разместить stack-overflow-post-about-my -проблема
У меня есть это исключение java.lang.IllegalStateException: JsonWriter is closed
, когда я пытаюсь обернуть FlatFileItemWriter
с FlatFileHeaderCallback
в моем последнем MultiResourceItemWriter
писателе.
Итак, есть ли способ указать верхний и нижний колонтитулы для всего файла, созданного MultiResourceItemWriter
при записи в новый файл (разделение на несколько файлов)? Есть ли способ определить шаблон файла, в который записывается MultiResourceItemWriter
?
Если нет, не могли бы вы посоветовать мне это сделать?
Я хотел бы, чтобы в конечном итоге все файлы, созданные MultiResourceItemWriter, имели в начале {"informations":[
, а в конце ]}
, все содержимое файла заключено в массив json informations
.