`
promisepk
  • 浏览: 4014 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

spring-batch集成例子

 
阅读更多
环境
jdk8,maven,oracle,

代码
Job-Repository.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:batch="http://www.springframework.org/schema/batch"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/batch
http://www.springframework.org/schema/batch/spring-batch-2.1.xsd" >
<batch:job-repository id="jobRepository" data-source="dataSource" isolation-level-for-create="READ_COMMITTED" transaction-manager="transactionManager" />
<bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
	<property name="jobRepository" ref="jobRepository" />
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.SingleConnectionDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@url:port:dbname"/>
<property name="username" value="user" />
<property name="password" value="pwd" />

</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
	<property name="dataSource" ref="dataSource" />
</bean>
</beans>


batch.xml

<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:int="http://www.springframework.org/schema/integration"
  xmlns:batch="http://www.springframework.org/schema/batch"
  xmlns:batch-int="http://www.springframework.org/schema/batch-integration"
  xsi:schemaLocation="
    http://www.springframework.org/schema/batch-integration
    http://www.springframework.org/schema/batch-integration/spring-batch-integration.xsd
    http://www.springframework.org/schema/batch
    http://www.springframework.org/schema/batch/spring-batch.xsd
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/integration
    http://www.springframework.org/schema/integration/spring-integration.xsd">

  <import resource="classpath:Job-Repository.xml"/> 

    <batch:job id="helloWorldJob">
        <batch:step id="step_hello" next="step_world">
            <batch:tasklet ref="hello" transaction-manager="transactionManager"></batch:tasklet>
        </batch:step>
        <batch:step id="step_world">
            <batch:tasklet ref="world" transaction-manager="transactionManager"></batch:tasklet>
        </batch:step>
    </batch:job>

    <bean id="hello" class="hello.HelloWorldTasklet">
        <property name="message" value="Hello "></property>
    </bean>

    <bean id="world" class="hello.HelloWorldTasklet">
        <property name="message" value=" World!"></property>
    </bean>
</beans>


JobLaunch.java
package hello;


import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class JobLaunch {

    /**
     * @param args
     */
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext(
                "batch.xml");
        JobLauncher launcher = (JobLauncher) context.getBean("jobLauncher");
        Job job = (Job) context.getBean("helloWorldJob");
        try {
            /* 运行Job */
            JobExecution result = launcher.run(job, new JobParameters());
            /* 处理结束,控制台打印处理结果 */
            System.out.println(result.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


HelloWorldTasklet.java

package hello;


import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class JobLaunch {

    /**
     * @param args
     */
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext(
                "batch.xml");
        JobLauncher launcher = (JobLauncher) context.getBean("jobLauncher");
        Job job = (Job) context.getBean("helloWorldJob");
        try {
            /* 运行Job */
            JobExecution result = launcher.run(job, new JobParameters());
            /* 处理结束,控制台打印处理结果 */
            System.out.println(result.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


建表脚本


CREATE SEQUENCE BATCH_STEP_EXECUTION_SEQ;
CREATE SEQUENCE BATCH_JOB_EXECUTION_SEQ;
CREATE SEQUENCE BATCH_JOB_SEQ;

select * from BATCH_JOB_INSTANCE;
select * from BATCH_JOB_EXECUTION_PARAMS;
select * from BATCH_JOB_EXECUTION;
select * from BATCH_STEP_EXECUTION;
select * from BATCH_JOB_EXECUTION_CONTEXT;
select * from BATCH_STEP_EXECUTION_CONTEXT;


drop  table   BATCH_JOB_EXECUTION_CONTEXT;
drop  table   BATCH_STEP_EXECUTION_CONTEXT;
drop  table   BATCH_STEP_EXECUTION;
drop  table   BATCH_JOB_EXECUTION_PARAMS;
drop  table   BATCH_JOB_EXECUTION;
drop  table   BATCH_JOB_INSTANCE;


CREATE TABLE BATCH_JOB_INSTANCE  (
  JOB_INSTANCE_ID number  PRIMARY KEY ,
  VERSION number,
  JOB_NAME VARCHAR(100) NOT NULL ,
  JOB_KEY VARCHAR(2500)
);


cREATE TABLE BATCH_JOB_EXECUTION_PARAMS  (
  JOB_EXECUTION_ID number NOT NULL ,
  TYPE_CD VARCHAR(6) NOT NULL ,
  KEY_NAME VARCHAR(100) NOT NULL ,
  STRING_VAL VARCHAR(250) ,
  DATE_VAL date DEFAULT NULL ,
  LONG_VAL number ,
  DOUBLE_VAL DOUBLE PRECISION ,
	IDENTIFYING CHAR(1) NOT NULL 
);

CREATE TABLE BATCH_JOB_EXECUTION  (
  JOB_EXECUTION_ID number  PRIMARY KEY ,
  VERSION number,
  JOB_INSTANCE_ID number NOT NULL,
  CREATE_TIME TIMESTAMP NOT NULL,
  START_TIME TIMESTAMP DEFAULT NULL,
  END_TIME TIMESTAMP DEFAULT NULL,
  STATUS VARCHAR(10),
  EXIT_CODE VARCHAR(20),
  EXIT_MESSAGE VARCHAR(2500),
  LAST_UPDATED TIMESTAMP,
  JOB_CONFIGURATION_LOCATION VARCHAR(2500) NULL,
  constraint JOB_INSTANCE_EXECUTION_FK foreign key (JOB_INSTANCE_ID)
  references BATCH_JOB_INSTANCE(JOB_INSTANCE_ID)
) ;

CREATE TABLE BATCH_STEP_EXECUTION  (
  STEP_EXECUTION_ID number  PRIMARY KEY ,
  VERSION number NOT NULL,
  STEP_NAME VARCHAR(100) NOT NULL,
  JOB_EXECUTION_ID number NOT NULL,
  START_TIME TIMESTAMP NOT NULL ,
  END_TIME TIMESTAMP DEFAULT NULL,
  STATUS VARCHAR(10),
  COMMIT_COUNT number ,
  READ_COUNT number ,
  FILTER_COUNT number ,
  WRITE_COUNT number ,
  READ_SKIP_COUNT number ,
  WRITE_SKIP_COUNT number ,
  PROCESS_SKIP_COUNT number ,
  ROLLBACK_COUNT number ,
  EXIT_CODE VARCHAR(20) ,
  EXIT_MESSAGE VARCHAR(2500) ,
  LAST_UPDATED TIMESTAMP,
  constraint JOB_EXECUTION_STEP_FK foreign key (JOB_EXECUTION_ID)
  references BATCH_JOB_EXECUTION(JOB_EXECUTION_ID)
) ;

CREATE TABLE BATCH_JOB_EXECUTION_CONTEXT  (
  JOB_EXECUTION_ID number PRIMARY KEY,
  SHORT_CONTEXT VARCHAR(2500) NOT NULL,
  SERIALIZED_CONTEXT CLOB,
  constraint JOB_EXEC_CTX_FK foreign key (JOB_EXECUTION_ID)
  references BATCH_JOB_EXECUTION(JOB_EXECUTION_ID)
) ;

CREATE TABLE BATCH_STEP_EXECUTION_CONTEXT  (
  STEP_EXECUTION_ID number PRIMARY KEY,
  SHORT_CONTEXT VARCHAR(2500) NOT NULL,
  SERIALIZED_CONTEXT CLOB,
  constraint STEP_EXEC_CTX_FK foreign key (STEP_EXECUTION_ID)
  references BATCH_STEP_EXECUTION(STEP_EXECUTION_ID)
) ;






分享到:
评论

相关推荐

    [原创]Spring Batch 示例程序

    Spring 3提供了与Spring Batch的紧密集成,使得配置和使用变得更加简单。通过XML配置或者更现代的Java配置,开发者可以定义Job和Step的结构,以及它们之间的关系。Spring的依赖注入(DI)和AOP特性也能够应用于...

    【SpringBatch】批处理框架整合配置过程文档.docx

    SpringBatch 是一个由 Spring 社区开发的轻量级、全面的批处理框架,它为构建强大、可靠的批处理应用程序提供了必要的工具和组件。Spring Batch 基于 Spring Framework,因此具备了 Spring 提供的生产力、面向 POJO ...

    spring-projects:春天的例子

    Sep 19 Spring Batch AWS集成Spring Batch与AWS SQS的集成,用于远程分块和分区。并 Jun 19响应式与非响应式Spring性能比较Spring MVC和Spring WebFlux之间的性能。 并 Apr 19使用Mongo群集的Spring Data Mongo使用...

    ibatis 完美例子 一对多 批处理 事务 和 spring struts2集成

    本文将深入探讨如何利用Ibatis实现一对多关系、批处理、事务管理和与Spring及Struts2的集成。 首先,让我们来看一下“一对多”关系。在数据库设计中,一对多关系很常见,比如一个用户可以有多个订单。在Ibatis中,...

    Spring-course:春天的例子

    6. **Spring Batch**: 用于处理大量数据的批处理框架,支持事务管理、错误处理和重试机制,适用于批量导入导出、数据清洗等场景。 7. **Spring Integration**: 提供了多种协议和消息系统的连接器,便于实现不同系统...

    SpringBatchMybatis:用mybatis使用spring batch的例子

    配置Spring Batch与MyBatis的集成,你需要在Spring配置文件中声明Job、Step、Reader、Processor和Writer的相关bean,并配置数据源、事务管理器以及MyBatis的SqlSessionFactory。此外,还需要确保MyBatis的Mapper XML...

    spring-projects-examples

    这个压缩包很可能是包含了一系列使用Spring框架开发的实际项目例子,帮助开发者理解和学习Spring的核心特性和扩展功能。 描述中的“spring-projects-examples”进一步确认了这一点,暗示这是一系列关于Spring的实践...

    Spring详细笔记和例子

    这份"Spring详细笔记和例子"应该包含了Spring框架的各个方面,包括但不限于核心容器、数据访问/集成、Web、AOP、工具类以及测试模块。 1. **核心容器**:Spring的核心组件主要包括Bean工厂(BeanFactory)和...

    spring webflow的一个例子

    这个例子中的"CartApp3"很可能是一个基于Spring WebFlow实现的购物车应用程序。 在Spring WebFlow中,流程是应用程序的核心,它定义了用户与系统的交互路径。流程由一系列的状态(states)组成,每个状态可以包含一...

    spring培训的例子

    8. Spring生态中的其他工具和框架,如Spring Data、Spring Batch等。 通过这个培训,学员不仅能掌握Spring框架的实际应用,还能提升对Java企业级开发的整体理解,为成为一名合格的Spring开发者打下坚实基础。

    spring-family-learn:这是一个Spring框架全家桶的学习仓库,有大量的个人学习笔记和代码实例,欢迎叉〜

    在这个仓库中,你可能能看到关于如何创建Spring Boot项目、添加依赖、配置启动类以及使用Actuator进行健康检查和监控的例子。 Spring Security是Spring框架的安全模块,提供认证和授权功能。学习这个仓库,你将有...

    Apress.Pro.Spring.4th.Edition

    - **第一个Spring应用**:通过一个简单的例子来介绍如何构建第一个基于Spring的应用程序。 #### 3. Spring中的IoC与DI - **IoC(Inversion of Control)**:控制反转是一种设计模式,用来减少计算机代码之间的耦合...

    springBoot+springBatch批量处理数据demo

    在SpringBoot项目中集成SpringBatch,只需要添加对应的依赖到`pom.xml`或`build.gradle`文件中,即可开启批处理功能。 SpringBatch的核心概念包括Job、Step、ItemReader、ItemProcessor和ItemWriter。Job是批处理...

    springbyexample

    标题 "springbyexample" 暗示我们关注的是与Spring框架相关的示例教程。...在实际项目中,还会涉及到Spring的其他模块,如Spring Batch、Spring Cloud等,这些都是Spring生态系统的一部分,提供了更多的功能扩展。

    Spring+in+action+中文版(第4版)

    - **3.1.2 Spring Batch**:Spring Batch提供了批处理应用程序的框架。 #### 3.2 Spring 与其他技术的集成 - **3.2.1 Spring 与消息队列的集成**:例如与Apache Kafka的集成。 - **3.2.2 Spring 与微服务架构的结合...

    Spring的第一个案例

    在实际开发中,我们会逐渐接触到更多Spring的高级特性和用法,如Spring Security(安全)、Spring Cloud(微服务)、Spring Batch(批处理)等,这些都将进一步提升我们的开发效率和应用质量。通过不断学习和实践,...

    spring例子

    8. **Spring Batch**:对于批量处理和大数据量操作,Spring Batch提供了一套完整的解决方案,包括读取、处理和写入大量数据的能力。 9. **实战示例**:压缩包中的例子可能包含了一些实际项目案例,比如用户注册登录...

    spring例子(基础)

    10. **Spring Batch**:用于执行批量处理任务的模块,支持读取大量数据、处理数据、写入数据,并具有错误处理和重试机制。 以上是Spring框架的基础知识,通过提供的压缩包,你可以找到相关的代码示例,加深对这些...

Global site tag (gtag.js) - Google Analytics