我想使用Spring Batch和Spring Integration从数据库导入数据,并将它们写入文件,然后通过ftp将其传输到远程服务器。
但是我想我的问题是我不想为我的表创建域对象。我的查询是随机的,我想要一些可以读取数据并将其写入文件并进行传输的东西。
是否可以在不创建各自的域对象的情况下使用Spring Batch和Integration?
绝对。您可以将JDBC ItemReader
或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>
主要内容:面向读者,前提条件,问题反馈Spring Batch是一个轻量级框架,用于在开发企业应用程序中批处理应用程序。 本教程解释了Spring Batch的基本概念,并展示了如何在实际环境中使用它。 面向读者 本教程对于那些需要处理大量涉及诸如事务管理,作业处理统计,资源管理等重复操作的记录的专业人员来说尤其有用。Spring Batch是处理大容量的非常有效的框架 批量作业。 前提条件 Spring Batch建立在Spring
我想用3个步骤建立一个批次。我想配置这个步骤,就像如果有100条记录,当step1读取、处理和写入一个10块时,step02,然后step03开始和结束,然后再次返回step1,读取下一个块。这在Spring批量可能吗?
我创建了一个新示例,并将代码分为客户端和服务器端。 完整的代码可以在这里找到。 服务器端有3个版本。 服务器无Spring Boot应用程序,使用Spring Integration RSocket InboundGateway 服务器引导重用Spring RSocket autconfiguration,并通过serverrsocketmessagehandler创建ServerRSocketC
我正在使用一个Spring Boot+Spring Security OAuth2应用程序,我相信它的灵感来自Dave Syer的示例。应用程序被配置为OAuth2授权服务器,具有使用资源所有者密码凭据流的单个公共客户端。成功的令牌被配置为JWT。 公共Angular客户机向/oauth/token发送一个POST请求,该请求带有包含客户机id和秘密的基本身份验证头(这是让客户机进行身份验证的最简
Spring是一个流行的Web框架,它提供易于集成与很多常见的网络任务。所以,问题是,为什么我们需要Spring,当我们有Struts2?Spring是超过一个MVC框架 - 它提供了许多其它好用的东西,这是不是在Struts。例如:依赖注入可以是有用的任何框架。在本章中,我们将通过一个简单的例子来看看如何集成Spring和Struts2一起。 首先,需要添加下列文件到项目的构建路径从Spring
我正在尝试使用几个s-vaadin、jsp等实现一个应用程序。 它使用简单的,但后来我决定使用vaadin作为ui。 我创建了vaadin servlet(Spring的servlet也留下了)。我的看起来像这样 我创建了vaadin组件并根据我的需要对其进行了调整。我使用自动装配进行服务。 也是一个Spring bean。 < code>ProjectRepository是另一个spring b