栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring Batch之作业步Step的抽象与继承(十二)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Batch之作业步Step的抽象与继承(十二)

        Spring Batch框架支持抽象的Step定义和Step的继承特性。通过定义抽象的Step可以将Step的共性进行抽取,形成父类的Step定义;然后各个具体的Step可以继承父类Step的特性,并定义自己的属性。

一、抽象Step

        通过abstract属性可以指定Step为抽象的Step。抽象的Step不能被实例化,只能作为其他Step的父类。通常可以在抽象的Step中定义全局性的配置,供子类使用。


    
        
    

二、继承Step

        通过parent属性可以指定当前的Step的父类,类似于Java中的继承一样,子类Step具有父类中定义的所有属性能力。子类继承时候,可以从抽象Step继承,也可以从普通的Step中继承。


    
        
    




    
        
        
    

三、项目举例 1.项目框架

2.代码实现

CreditBill.java:

package com.xj.demo10;


public class CreditBill {
    //银行卡账户ID
    private String accountID = "";
    //持卡人姓名
    private String name = "";
    //消费金额
    private double amount = 0;
    //消费日期
    private String date = "";
    //消费场所
    private String address = "";

   //get和set方法

    @Override
    public String toString() {
        return this.accountID + "," + this.name + "," + this.amount + "," + this.date + "," + this.address;
    }
}

CreditBillProcessor.java:

package com.xj.demo10;

import org.springframework.batch.item.ItemProcessor;

import java.util.Date;


public class CreditBillProcessor implements ItemProcessor {
    @Override
    public CreditBill process(CreditBill bill) throws Exception {

        System.out.println(bill.toString());
        //做一些简单的处理
        bill.setAccountID(bill.getAccountID() + "1");
        bill.setName(bill.getName() + "2");
        bill.setAmount(bill.getAmount() + 3);
        bill.setDate(new Date().toString());
        bill.setAddress(bill.getAddress() + 5);

        return bill;
    }
}

Demo10BatchMain.java:

package com.xj.demo10;

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

public class Demo10BatchMain {

    public static void main(String[] args) {
        Demo10BatchMain batchMain = new Demo10BatchMain();
        batchMain.executeJob("demo10/job/demo10-job.xml", "billJob", "jobLauncher", new JobParametersBuilder().toJobParameters());
    }

    
    public void executeJob(String jobXmlPath, String jobId, String jobLauncherId, JobParameters jobParameters){
        ApplicationContext context = new ClassPathXmlApplicationContext(jobXmlPath);
        JobLauncher jobLauncher = (JobLauncher) context.getBean(jobLauncherId);
        //获取要执行的Job
        Job job = (Job)context.getBean(jobId);

        try{
            //开始执行作业Job
            JobExecution jobExecution =  jobLauncher.run(job, jobParameters);
            //输出执行结果
            System.out.println(jobExecution.toString());
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

demo10-inputFile.csv:

4101231234656,tom,100.00,2013-12-31 12:00:08,Lu lit
4101236543210,tom,120.00,2013-12-31 12:00:08,Lu Zui

demo10-job.xml:




    
    

    
    
        
            
        
    

    
    
        
            
            
        
    

    
    
        
        
            
                
                
                
            
        
    

说明:通过配置文件可以看出,billJob使用的是自己的“commit-interval=2”的属性,而不是abstractParentStep的“commit-interval=10”属性,因为自己配置了commit-interval,所以覆盖了abstractParentStep的commit-interval;使用的parentStep的“reader”和“writer”,使用自己的“processor”。

demo10-jobContext.xml:




    
    
    

    
    
        
        
    

    
    

    
    
    
        
        
        
        
            
                
                
                
                
                    
                        
                    
                
            
        
    

    
    
        
        
        
        
            
                accountID
                name
                amount
                date
                address
            
        
    

    
    

    
    

    
    
        
        
        
        
            
            
                
                
                
                
                    
                        
                        
                    
                
            
        
    
3.运行结果

成功写入demo10-outputFile.csv: 

控制台输出:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/658176.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号