`
flychao88
  • 浏览: 753300 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring Batch实例详解

 
阅读更多

       Spring Batch是一个轻量级的,完全面向Spring的批处理框架,可以应用于企业级大量的数据处理系统。Spring Batch以POJO和大家熟知的Spring框架为基础,使开发者更容易的访问和利用企业级服务。

 

       Spring Batch可以提供大量的,可重复的数据处理功能,包括日志记录/跟踪,事务管理,作业处理统计工作重新启动、跳过,和资源管理等重要功能。

 

       业务方案: 

       1、批处理定期提交。 

       2、并行批处理:并行处理工作。

       3、企业消息驱动处理

       4、大规模的并行处理 

       5、手动或是有计划的重启 

       6、局部处理:跳过记录(如:回滚)       

  

      技术目标: 

      1、利用Spring编程模型:使程序员专注于业务处理,让Spring框架管理流程。

      2、明确分离批处理的执行环境和应用。

      3、提供核心的,共通的接口。 

      4、提供开箱即用(out of the box)的简单的默认的核心执行接口。

      5、提供Spring框架中配置、自定义、和扩展服务。 

      6、所有存在的核心服务可以很容的被替换和扩展,不影响基础层。

      7、提供一个简单的部署模式,利用Maven构建独立的Jar文件

 

      Spring batch结构:

 

       这种分层结构有三个重要的组成部分:应用层、核心层、基础架构层。应用层包含所有的批处理作业,通过Spring框架管理程序员自定义的代码。核心层包含了Batch启动和控制所需要的核心类,如:JobLauncher、Job和step等。应用层和核心层建立在基础构架层之上,基础构架层提供共通的读(ItemReader)、写(ItemWriter)、和服务(如RetryTemplate:重试模块。可以被应用层和核心层使用)。

 

    案例分析:

 

    excel文件:aaa.csv

id,name,age,scope
1,aa,44,o
2,dd,55,b
3,ss,66,c

   需求:将aaa.csv文件的内容复制到bbb.csv文件中:

 

   一、Spring Batch配置文件如下: 

<?xml version="1.0" encoding="UTF-8"?>
<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.xsd
       http://www.springframework.org/schema/batch
       http://www.springframework.org/schema/batch/spring-batch-2.2.xsd"
       default-autowire="byName">

    <bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
        <property name="jobRepository" ref="jobRepository"/>
    </bean>

    <bean id="transactionManager" class="org.springframework.batch.support.transaction.ResourcelessTransactionManager"/>

    <bean id="jobRepository" class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean">
        <property name="transactionManager" ref="transactionManager"/>
    </bean>
    <batch:job id="job">
      <batch:step id="step1">
        <batch:tasklet >
          <batch:chunk reader="csvItemReader" writer="csvItemWriter"  commit-interval="1">
             </batch:chunk>
          </batch:tasklet>
        </batch:step>
    </batch:job>
    <bean id="csvItemReader" class="org.springframework.batch.item.file.FlatFileItemReader" scope="step">
        <property name="resource" value="props/aaa.csv"/>
        <property name="lineMapper" ref="dlmaper"/>
    </bean>
    <bean id="dlmaper" class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
      <property name="lineTokenizer" ref="lineTokenizer"/>
      <property name="fieldSetMapper" >
        <bean class="org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper">
            <property name="prototypeBeanName" value="student"/>
        </bean>
      </property>
    </bean>
    <bean id="student" class="com.jd.finance.platform.accounts.domain.vo.Student"/>
    <bean id="lineTokenizer" class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer" >
        <property name="delimiter" value=","/>
        <property name="names" >
            <list>
                <value>id</value>
                <value>name</value>
                <value>age</value>
                <value>score</value>
            </list>
        </property>
    </bean>
    <bean id="csvItemWriter" class="org.springframework.batch.item.file.FlatFileItemWriter" scope="step">
      <property name="resource" value="props/bbb.csv"/>
      <property name="lineAggregator">
        <bean class="org.springframework.batch.item.file.transform.DelimitedLineAggregator">
           <property name="delimiter" value=","/>
           <property name="fieldExtractor">
              <bean class="org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor">
                  <property name="names" value="name,age,scope"/>
              </bean>
           </property>
         </bean>
        </property>
    </bean>

</beans>

 

   二、执行Action类

  

@Controller
@RequestMapping("/service")
public class OperateAnalyzeServiceAction {
    private static final Logger log = LoggerFactory.getLogger(OperateAnalyzeServiceAction.class);

    @Autowired
    private Job job;

    @Autowired
    private SimpleJobLauncher jobLauncher;

    @RequestMapping(value = "/doExecute", method = RequestMethod.GET)
    public void doExecute() {
        try {            
            JobExecution  result = jobLauncher.run(job, new JobParameters());             /* 处理结束,控制台打印处理结果 */
            System.out.println(result.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

public class Student {
    private  String id;
    private  String name;
    private String age;
    private String scope;


    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getScope() {
        return scope;
    }

    public void setScope(String scope) {
        this.scope = scope;
    }
}

 

 

<dependency>
    <groupId>org.springframework.batch</groupId>
    <artifactId>spring-batch-core</artifactId>
    <version>2.2.3.RELEASE</version>
</dependency>

<dependency>
    <groupId>org.springframework.batch</groupId>
    <artifactId>spring-batch-infrastructure</artifactId>
    <version>2.2.3.RELEASE</version>
</dependency>

<dependency>
    <groupId>org.springframework.batch</groupId>
    <artifactId>spring-batch-test</artifactId>
    <version>2.2.3.RELEASE</version>
    <scope>test</scope>
</dependency>

 

 

 

 

 

分享到:
评论

相关推荐

    springbatch的封装与使用实例详解

    SpringBatch的封装与使用实例详解 SpringBatch是一个轻量级、全面的批处理框架,旨在开发强大的日常运营的企业级批处理应用程序。它提供了统一的读写接口、丰富的任务处理方式、灵活的事务管理及并发处理,同时还...

    spring batch 2.1.8版本

    ### Spring Batch 2.1.8 版本详解 #### 一、Spring Batch 简介 ##### 1.1 背景介绍 Spring Batch 是一个强大的批量处理框架,旨在简化开发大型批量数据处理应用的过程。该框架提供了一种灵活且可扩展的方式来构建...

    Spring.Batch.in.Action.pdf

    ### Spring Batch核心概念与应用详解 #### 春季批次行动:Spring Batch全面解析 《Spring Batch in Action》是一本深入探讨Spring Batch框架的专著,由Arnaud Cogoluègnes、Thierry Templier、Gary Gregory和...

    spring batch Doc

    ### Spring Batch核心知识点详解 #### 一、Spring Batch简介 **1.1 背景** Spring Batch 是一个用于在Spring框架中开发批量处理应用程序的框架。它为开发者提供了构建高性能、可靠的数据批量处理应用程序所需的...

    Spring Batch

    #### 五、Spring Batch 执行流程详解 Spring Batch 的执行流程如下: 1. **Job 启动**:由外部控制器调用 JobLauncher 来启动 Job。 2. **Step 执行**:每个 Job 包含一个或多个 Step,每个 Step 负责特定的数据...

    spring batch

    ### Spring Batch 知识点详解 #### 一、Spring Batch 概览 **Spring Batch** 是一个基于 Java 的批量处理框架,它为开发批量应用程序提供了一种强大的且灵活的方法。该框架旨在帮助开发者构建高性能、健壮的企业级...

    Spring基础知识详解

    10. **Spring Batch**:用于处理批量处理任务的模块,提供了批处理作业的完整生命周期管理,包括读取、处理和写入数据。 通过深入理解和熟练运用这些Spring基础概念,开发者可以构建出健壮、可扩展且易于维护的企业...

    Spring的批处理框架

    ### Spring的批处理框架知识点详解 #### 一、Spring Batch介绍与背景 Spring Batch 是一个构建于Spring框架之上的批量处理框架,它为开发者提供了一种简单而强大的方式来实现复杂的批处理作业。该框架主要关注于...

    spring详解(中文版)

    8. **Spring Batch**:处理批量数据操作的模块,适合进行复杂的数据导入导出、定时任务等场景。 9. **Spring Integration**:提供了异步处理和企业服务总线(ESB)的功能,帮助不同系统间的集成。 10. **Spring ...

    springstudy

    8. **smalltask.rar**:这个可能是包含小型任务或示例代码的压缩包,可能与Spring Batch或Spring其他功能的应用实例相关。 总的来说,这个压缩包提供的资料涵盖了Spring框架的基础和进阶内容,特别是Spring Batch的...

    spring框架,技术详解及使用指导.pdf.zip

    通过这个"Spring框架,技术详解及使用指导.pdf"文档,读者将能够深入理解Spring框架的各个组件和它们的工作原理,同时学习如何在实际项目中有效地应用Spring框架,从而提升开发效率和应用质量。无论你是初学者还是...

    java spring框架,技术详解及使用指导

    以下是对Spring框架的技术详解及使用指导: 1. **控制反转(IoC)**:IoC是Spring的核心概念之一,它将对象的创建和依赖关系的管理交给框架来处理,开发者只需要定义对象之间的依赖关系,而无需关注如何实例化和...

    精通spring2.x企业应用开发详解

    《精通Spring 2.x企业应用开发详解》是针对Spring框架2.x版本的一本深度学习教程,旨在帮助读者全面掌握Spring在企业级应用开发中的实践技巧和核心概念。这本书的源代码部分包括了"part5",暗示着它可能涵盖了整个...

    spring-batch-learn:Spring批处理学习项目

    本项目"spring-batch-learn"旨在帮助开发者深入理解和应用Spring Batch,通过实例化一个批处理学习项目,提供一个实践平台。 Spring Batch的核心特性包括读取、处理和写入数据,以及对处理失败的恢复能力。它的设计...

    spring_JdbcTemplete使用详解

    ### Spring JDBC 模板类(JdbcTemplate)使用详解 #### 一、Spring JDBC 概述 Spring 提供了一个强大的模板类 `JdbcTemplate` 来简化 JDBC 操作。通过使用 `JdbcTemplate`,开发者能够减少大量的样板代码,提高...

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

    这本书是Spring框架开发的必备指南,从基础知识到高级应用都有涉及,并且配有大量的实例帮助读者理解和掌握Spring框架的核心概念和技术。 ### 一、Spring 概览 #### 1.1 Spring 的起源与发展 - **1.1.1 Spring ...

    spring入门教程书籍

    这些书籍将帮助新手逐步理解Spring框架的核心特性,同时提供丰富的实例和最佳实践,帮助读者从基础到高级,全方位地掌握Spring技术栈,为后续的企业级应用开发打下坚实基础。通过学习和实践,你可以有效地提升自己的...

    Spring开发手册

    《Spring开发手册》 Spring框架是Java开发领域中不可或...本手册将详细阐述这些概念,并通过实例代码解析其用法,帮助读者掌握Spring框架的精髓,提升开发效率。无论是初学者还是经验丰富的开发者,都能从中受益匪浅。

    corespring5certificationindetail.pdf

    《核心Spring 5认证详解》 本书由Ivan Krizsan撰写,专注于Spring框架的核心5.0认证。出版于2019年11月29日,详细讲解了Spring认证的相关试题和答案,旨在帮助读者更好地理解和准备Spring认证考试。 Spring认证是...

Global site tag (gtag.js) - Google Analytics