Spring Batch и Spring Integration - PullRequest
       3

Spring Batch и Spring Integration

2 голосов
/ 28 октября 2011

Я хочу использовать Spring Batch и Spring Integration для импорта данных из базы данных и записи их в файл и передачи по FTP на удаленный сервер.

Но я полагаю, что моя проблема в том, что я не хочу создаватьДоменный объект для моей таблицы.Мои запросы случайные, и мне нужно что-то, что просто считывает данные и записывает их в файлы и передает.

Могу ли я использовать Spring Batch and Integration без создания соответствующих объектов домена?

Ответы [ 2 ]

4 голосов
/ 01 ноября 2011

Абсолютно. Вы можете использовать JDBC ItemReader s или JPA ItemReader с ColumnMapRowMapper для получения Map набора результатов. Вы можете использовать FlatFileItemWriter довольно просто для вывода данных в любом формате, который вам нравится (с помощью предоставленных классов очень легко разграничить; фиксированная ширина означает написание одного класса для перевода Map в строку фиксированной ширины).

Я делаю это довольно часто со Spring Batch, и это просто вопрос подключения.

Помимо определения ресурса, источника данных и предоставления SQL, эта (непроверенная) конфигурация в значительной степени будет выполнять именно то, что вы запрашиваете:

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/batch"
    xmlns:beans="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
        http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch-2.0.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">

    <job-repository id="jobRepository"
        data-source="jobDataSource"/>

    <beans:bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
        p:dataSource-ref="jobDataSource" />

    <beans:bean id="extractReader" scope="step"
        class="org.springframework.batch.item.database.JdbcCursorItemReader">
        <beans:property name="dataSource" ref="appDataSource" />
        <beans:property name="rowMapper">
            <beans:bean
                class="org.springframework.jdbc.core.ColumnMapRowMapper" />
        </beans:property>
        <beans:property name="sql">
            <beans:value>
                . . .
            </beans:value>
        </beans:property>
    </beans:bean>
    <beans:bean id="extractWriter"
        class="org.springframework.batch.item.file.FlatFileItemWriter" scope="step">
        <beans:property name="resource" ref="fileResource" />
        <beans:property name="lineAggregator">
            <beans:bean
                class="org.springframework.batch.item.file.transform.DelimitedLineAggregator">
                <beans:property name="delimiter">
                    <util:constant
                        static-field="org.springframework.batch.item.file.transform.DelimitedLineTokenizer.DELIMITER_TAB" />
                </beans:property>
                <beans:property name="fieldExtractor">
                    <beans:bean
                        class="org.springframework.batch.item.file.transform.PassThroughFieldExtractor" />
                </beans:property>
            </beans:bean>
        </beans:property>
    </beans:bean>

    <job id="extractJob" restartable="true">
        <step id="extractStep" >
            <tasklet>
                <chunk reader="extractReader" writer="extractWriter"
                    commit-interval="100" />
            </tasklet>
        </step>
    </job>

</beans:beans>
0 голосов
/ 18 сентября 2014

С моим нынешним опытом работы с Spring Batch.Если вы собираетесь обрабатывать вызов базы данных, используя JdbcTemplate или старый способ, то одни и те же POJO могут быть повторно использованы на разных прикладных уровнях.Однако, если вы собираетесь использовать JAXB, JIXB и т. Д. Для xml и Hinernate, MyBatis и т. Д. Для персистентности, у вас возникнут проблемы.POJO тесно связаны с конкретными аннотациями и API-ограничениями.

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