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配置文件如下: 




    
        
    

    

    
        
    
    
      
        
          
             
          
        
    
    
        
        
    
    
      
      
        
            
        
      
    
    
    
        
        
            
                id
                name
                age
                score
            
        
    
    
      
      
        
           
           
              
                  
              
           
         
        
    

 

   二、执行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;
    }
}

 

 


    org.springframework.batch
    spring-batch-core
    2.2.3.RELEASE



    org.springframework.batch
    spring-batch-infrastructure
    2.2.3.RELEASE



    org.springframework.batch
    spring-batch-test
    2.2.3.RELEASE
    test

 

 

 

 

 

你可能感兴趣的:(开发框架)