Учебники

Spring Batch — читатели, писатели и процессоры

Средство чтения элементов считывает данные в приложение Spring Batch из определенного источника, тогда как средство записи элементов записывает данные из приложения Spring Batch в конкретное место назначения.

Процессор Item — это класс, который содержит код обработки, который обрабатывает данные, считанные в пакет пружины. Если приложение читает n записей, код в процессоре будет выполняться для каждой записи.

Чанк является дочерним элементом тасклета . Он используется для выполнения операций чтения, записи и обработки. Мы можем настроить считыватель, записывающее устройство и процессоры, используя этот элемент, в течение шага, как показано ниже.

<batch:job id = "helloWorldJob"> 
   <batch:step id = "step1"> 
      <batch:tasklet> 
         <batch:chunk reader = "cvsFileItemReader" writer = "xmlItemWriter" 
            processor = "itemProcessor" commit-interval = "10"> 
         </batch:chunk> 
      </batch:tasklet> 
   </batch:step> 
</batch:job>

Spring Batch предоставляет читателям и авторам возможность считывать и записывать данные из различных файловых систем / баз данных, таких как MongoDB, Neo4j, MySQL, XML, flatfile, CSV и т. Д.

Чтобы включить считыватель в ваше приложение, вам нужно определить bean-компонент для этого считывателя, предоставить значения для всех необходимых свойств в bean-компоненте и передать идентификатор такого bean-компонента в качестве значения в атрибут средства чтения элементов chunk (то же самое для писатель ).

ItemReader

Это сущность шага (пакетного процесса), который читает данные. ItemReader читает один элемент за раз. Spring Batch предоставляет интерфейс ItemReader . Все читатели реализуют этот интерфейс.

Ниже приведены некоторые предопределенные классы ItemReader, предоставляемые Spring Batch для чтения из различных источников.

читатель Цель
FlatFIleItemReader Для чтения данных из плоских файлов.
StaxEventItemReader Для чтения данных из файлов XML.
StoredProcedureItemReader Читать данные из хранимых процедур базы данных.
JDBCPagingItemReader Для чтения данных из базы данных реляционных баз данных.
MongoItemReader Читать данные из MongoDB.
Neo4jItemReader Читать данные из Neo4jItemReader.

Нам нужно настроить ItemReaders , создав бины . Ниже приведен пример StaxEventItemReader, который считывает данные из файла XML.

<bean id = "mysqlItemWriter" 
   class = "org.springframework.batch.item.xml.StaxEventItemWriter"> 
   <property name = "resource" value = "file:xml/outputs/userss.xml" /> 
   <property name = "marshaller" ref = "reportMarshaller" /> 
   <property name = "rootTagName" value = "Tutorial" /> 
</bean> 

<bean id = "reportMarshaller" 
   class = "org.springframework.oxm.jaxb.Jaxb2Marshaller"> 
   <property name = "classesToBeBound"> 
      <list> 
         <value>Tutorial</value> 
      </list> 
   </property> 
</bean> 

Как уже отмечалось, при настройке нам нужно указать имя соответствующего класса для необходимого читателя, и нам нужно предоставить значения для всех необходимых свойств.

ItemWriter

Это элемент шага пакетного процесса, который записывает данные. ItemWriter пишет один элемент за раз. Spring Batch предоставляет интерфейс ItemWriter . Все авторы реализуют этот интерфейс.

Ниже приведены некоторые предопределенные классы ItemWriter, предоставляемые Spring Batch для чтения из различных источников.

писатель Цель
FlatFIleItemWriter Для записи данных в плоские файлы.
StaxEventItemWriter Для записи данных в файлы XML.
StoredProcedureItemWriter Для записи данных в хранимые процедуры базы данных.
JDBCPagingItemWriter Для записи данных в базу данных реляционных баз данных.
MongoItemWriter Для записи данных в MongoDB.
Neo4jItemWriter Для записи данных в Neo4j.

Точно так же нам нужно настроить ItemWriters, создав бины. Ниже приведен пример JdbcCursorItemReader, который записывает данные в базу данных MySQL.

<bean id = "dbItemReader"
   class = "org.springframework.batch.item.database.JdbcCursorItemReader" scope = "step">
   <property name = "dataSource" ref = "dataSource" />
   <property name = "sql" value = "select * from tutorialsdata" />
   <property name = "rowMapper">
      <bean class = "TutorialRowMapper" /> 
   </property>
</bean>

Обработчик предметов

ItemProcessor : ItemProcessor используется для обработки данных. Когда данный элемент недействителен, он возвращает ноль , иначе он обрабатывает данный элемент и возвращает обработанный результат. Интерфейс ItemProcessor <I, O> представляет процессор.

Класс тасклетов — когда не указаны ни читатель, ни писатель , тасклет действует как процессор для SpringBatch. Он обрабатывает только одну задачу.

Мы можем определить пользовательский процессор элементов путем реализации интерфейса ItemProcessor пакета org.springframework.batch.item.ItemProcessor . Этот класс ItemProcessor принимает объект, обрабатывает данные и возвращает обработанные данные как другой объект.

В пакетном процессе, если «n» записей или элементов данных считываются, то для каждой записи он будет считывать данные, обрабатывать их и записывать данные в записывающее устройство. Чтобы обработать данные, он передает на переданный процессор.

Например, предположим, что вы написали код для загрузки определенного документа PDF, создания новой страницы, записи элемента данных в PDF в табличном формате. Если вы запустите это приложение, оно прочитает все элементы данных из документа XML, сохранит их в базе данных MySQL и напечатает их в данном документе PDF на отдельных страницах.

пример

Ниже приведен пример класса ItemProcessor.