`

Spring Batch Sample

阅读更多

 

   1. SampleDecider.java

package sample;

import org.apache.log4j.Logger;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.StepExecution;
import org.springframework.batch.core.job.flow.FlowExecutionStatus;
import org.springframework.batch.core.job.flow.JobExecutionDecider;

public class SampleDecider implements JobExecutionDecider {
	private Logger logger = Logger.getLogger(SampleDecider.class);
	
	private String DECIDER_FLAG = "DECIDER_FLAG";
	
	@Override
	public FlowExecutionStatus decide(JobExecution jobExecution,
			StepExecution stepExecution) {
		
		logger.debug("execute the SampleDecider... ");
		JobParameters jobParameters  =jobExecution.getJobParameters();
		
		String flag = jobParameters.getString(DECIDER_FLAG);
		
		if(flag == null){
			flag = "";
		}
		logger.debug("the decider flag is "+flag);
		
		return new FlowExecutionStatus(flag);
	}

}

 

 

    2. SampleItemProcessor.java

package sample;

import org.apache.log4j.Logger;
import org.springframework.batch.item.ItemProcessor;

public class SampleItemProcessor implements ItemProcessor<String, String> {

	private Logger logger = Logger.getLogger(SampleItemProcessor.class);
	
	@Override
	public String process(String str) throws Exception {
		logger.debug("execute the SampleItemProcessor...");
		
		return str;
	}
}

  

    3. SampleItemReader.java

package sample;

import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;
import org.springframework.batch.item.ItemReader;
import org.springframework.batch.item.NonTransientResourceException;
import org.springframework.batch.item.ParseException;
import org.springframework.batch.item.UnexpectedInputException;

public class SampleItemReader implements ItemReader<String> {
	
	private Logger logger = Logger.getLogger(SampleItemReader.class);
	
	private List<String> list = new ArrayList<String>();
	
	public SampleItemReader(){
		list.add("1");
		list.add("2");
		list.add("3");
	}
	
	@Override
	public String read() throws Exception, UnexpectedInputException, ParseException,
			NonTransientResourceException {
		logger.debug("execute the SampleItemWriter... ");
		if(list.size()>0){
			return list.remove(0);
		}
		return null;
	}
}

 

    4. SampleItemWriter.java

package sample;

import java.util.List;

import org.apache.log4j.Logger;
import org.springframework.batch.item.ItemWriter;

public class SampleItemWriter implements ItemWriter<String> {
	private Logger logger = Logger.getLogger(SampleItemWriter.class);
	
	@Override
	public void write(List<? extends String> arg0) throws Exception {
		logger.debug("execute the SampleItemWriter... ");
	}
}

 

    5. DefaultConnection.java

package sample;

import java.sql.Array;
import java.sql.Blob;
import java.sql.CallableStatement;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.NClob;
import java.sql.PreparedStatement;
import java.sql.SQLClientInfoException;
import java.sql.SQLException;
import java.sql.SQLWarning;
import java.sql.SQLXML;
import java.sql.Savepoint;
import java.sql.Statement;
import java.sql.Struct;
import java.util.Map;
import java.util.Properties;

public class DefaultConnection implements Connection {
          .....
}

 

    6. SampleDataSource.java

package sample;

import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;

import javax.sql.DataSource;

public class SampleDataSource implements DataSource{
       ....
}

 

    7. sample-job.xml

<?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:xsi="http://www.w3.org/2001/XMLSchema-instance"
	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">
	
	<!-- configure the job repository -->
	<beans:bean id="jobRepository"
		class="org.springframework.batch.core.repository.support.SimpleJobRepository">
        <beans:constructor-arg>
            <beans:bean class="org.springframework.batch.core.repository.dao.MapJobInstanceDao"/>
        </beans:constructor-arg>
        <beans:constructor-arg>
            <beans:bean class="org.springframework.batch.core.repository.dao.MapJobExecutionDao" />
        </beans:constructor-arg>
        <beans:constructor-arg>
            <beans:bean class="org.springframework.batch.core.repository.dao.MapStepExecutionDao"/>
        </beans:constructor-arg>
        <beans:constructor-arg>
            <beans:bean class="org.springframework.batch.core.repository.dao.MapExecutionContextDao"/>
       </beans:constructor-arg>
	</beans:bean>
	
	<!-- configure the job launcher -->
	<beans:bean id="jobLauncher" class="launcher.DefaultSimpleJobLauncher">  
        <beans:property name="jobRepository" ref="jobRepository"/>  
    </beans:bean>
    
	<job id="sampleJob" restartable="true">
		<decision decider="sampleDecider" id="sampleDecision">
			<next on="*" to="sampleStep"/>
			<end on="end"/>
		</decision>
	
		<step id="sampleStep">
			<tasklet>
		      <chunk reader="sampleItemReader" 
		      		 writer="sampleItemWriter" 
		      		 processor="sampleItemProcessor"
		             commit-interval="100">
		      </chunk>
			</tasklet>
		</step>
	</job>
	
	<beans:bean id="sampleItemReader" class="sample.SampleItemReader"/>
	<beans:bean id="sampleItemWriter" class="sample.SampleItemWriter"/>
	<beans:bean id="sampleItemProcessor" class="sample.SampleItemProcessor"/>
	<beans:bean id="sampleDecider" class="sample.SampleDecider"/>

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

 

    8. Main.java 测试

package sample;

import org.springframework.batch.core.launch.support.CommandLineJobRunner;

public class Main {

	public static void main(String[] args) throws Exception {
		String[] params = {"sample/sample-job.xml","sampleJob","DECIDER_FLAG=end"};
		
		CommandLineJobRunner.main(params);
	}
}

 

 

分享到:
评论
1 楼 lijiejava 2014-04-01  
哥 你能不能先介绍一下什么是Spring Batch ?

相关推荐

    Spring Batch sample project PatternMatchingCompositeLineMapper

    在这个名为 "Spring Batch sample project PatternMatchingCompositeLineMapper" 的示例项目中,我们聚焦于如何利用 `PatternMatchingCompositeLineMapper` 和 `MatchingClassLineAggregator` 这两个关键组件来优化...

    SpringBatch的简单Sample

    在"SpringBatch的简单Sample"中,我们将探讨两种主要的处理模式:Tasklet和Chunk。 1. **Tasklet**: Tasklet 是SpringBatch中的基本执行单元,它可以被视为一个独立的任务。Tasklet 不是基于数据集的,而是执行一...

    SpringBatch-HelloWorld

    SpringBatch Tasklet sample

    Spring Batch 实例代码

    通过分析和运行`batch_sample`中的代码,你可以深入理解Spring Batch如何处理数据,如何定义和配置批处理作业,以及如何自定义Readers、Processors和Writers来满足特定需求。此外,你还可以学习到如何利用Spring ...

    SpringBatchSample:Spring Batch 示例 4 书

    《Spring Batch批处理框架》是一本深入探讨Spring Batch的书籍,其配套源代码存放在名为SpringBatchSample-master的压缩包中。Spring Batch是Spring框架的一部分,专为解决大规模数据处理任务而设计,提供了强大且可...

    Spring中的sample

    9. **Spring Batch**:用于处理批量数据操作,支持读取、处理、写入等步骤,适合大数据量处理场景。 10. **Spring Security**:提供了全面的安全管理解决方案,包括认证、授权、CSRF防护等,可以保护Web应用的安全...

    spring-batch-sample

    以顺序或并行模式批处理文件的示例。 用 : mvn clean install# launch sequential versionjava -jar SpringBatchSample.jar sequential-context.xml printJob# launch parallel versionjava -jar SpringBatchSample...

    Spring-batch Demo.zip

    Spring Batch 是一个强大的、全面的批处理框架,用于处理大量数据。它被设计为高度可扩展和可配置,适用于各种企业级应用。Spring Batch 提供了处理大批量数据时所需的基础设施,包括读取、处理和写入数据,以及错误...

    pro spring batch

    Table of Contents * Batch and Spring * Spring Batch 101 * Sample Job * Understanding Jobs and Steps * Job Repository and Metadata * Running a Job * Readers * Item Processors * Item Writers * Sample ...

    spring-batch-example:学习 Spring Batch 时创建的 Repo

    java -jar build/libs/spring-batch-example-all-1.0.0.jar com.example.batch.TransportImportBatch loadTransportJob fileName=sample-data.csv ##Unit test 包括 jacoco 测试覆盖率报告 gradle unitTest 测试...

    spring-boot-sample-batch

    《Spring Boot Sample Batch:深入理解Java批量处理框架》 在Java世界中,Spring Boot以其便捷的配置、快速的开发效率以及强大的生态系统深受开发者喜爱。在处理大量数据时,Spring Batch作为一个成熟的批量处理...

    spring-batch-lightmin-samples:Spring Batch Lightmin示例应用程序

    Spring批次Lightmin样品该项目包含示例应用程序,以演示Spring Batch Lightmin库的用法。...存储库服务器样本spring-batch-lightmin-repository-server-sample 样本存储库服务器应用程序服务器样本spring-batch

    csv-file-procesor-spring-batch:这个应用程序确实使用 Spring Batch 处理了一个巨大的 CSV 文件,它可以使用 Maven 进行测试

    csv-file-processor-spring-batch 该应用程序确实使用 Spring Batch 处理了一个巨大的 CSV 文件,它可以使用 Maven 进行构建/测试。 它确实需要传递以下属性/参数: --csv.processor.chunk.size={要处理的块大小} --...

    spring-batch-itemwriter

    该项目将两个主要示例组合在一起,显示了如何使用spring batch来生产平面文件。 此处配置的作业将读取一个csv文件(sample-data.csv),将每一行转换为大写文本,然后将其写回到文件中。 这个想法是为了显示困扰我的...

    batch_sample:使用Spring4快速启动批处理的示例

    batch_sample [•] 是用于使用Spring4快速启动批处理的示例。 它基于版本。 关于 有关Spring4的更多。 有关Mybatis3的更多。 有关Gradle的更多。 需求环境 开始吧 将密码设置为root。 mysql&gt;GRANT ALL ...

    spring-boot-sample-batch-with-apns-gcm:带有 GcmPush bean 的简单 Spring Boot 应用程序,它是 Gcm-Server 和 Javapns 的包装 bean

    spring-boot-sample-batch-with-apns-gcm 这是在 spring-boot-sample-batch 之上的 APNS 和 GCM 示例应用程序 背景 在我的公司,我有机会制作一个内部“推送服务器”,它是 APNS 和 GCM 的网关服务器。 所以我决定...

    spring-sample

    6. **批处理**:Spring Batch为批量处理任务提供了全面的支持,包括读取、处理和写入大量数据。 7. **测试支持**:Spring提供了一系列工具来简化单元测试和集成测试,如Mock对象、TestContext框架等。 从“spring-...

    SpringBootSample:Spring Boot样本源

    spring-boot-batch spring-boot-cache spring-boot-configurable spring-boot-cors spring-boot-custom-jackson spring-boot-docker spring-boot-dynamo spring-boot-event spring-boot-excel sp

    Spring与Mybatis整合

    return (User) sqlSession.selectOne("org.mybatis.spring.sample.mapper.UserMapper.getUser", userId); } ``` **5. 其他配置选项** 除了以上介绍的内容,你还可以配置Mybatis的全局设置、事务管理器以及拦截器等...

    spring-study-sample-code:一个项目跟随了这个

    9. **Spring Batch**:用于处理批量操作的框架,如大量数据的导入导出、定期任务等。 10. **测试支持**:Spring提供了JUnit和Mockito等工具的集成,方便编写单元测试和集成测试。 这个"spring-study-sample-code...

Global site tag (gtag.js) - Google Analytics