• 技术文章 >Java >java教程

    分享Spring Batch的介绍

    零下一度零下一度2017-06-17 11:52:31原创868
    这篇文章主要给大家介绍了Spring Batch入门的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。

    SpringBatch介绍:

    SpringBatch 是一个大数据量的并行处理框架。通常用于数据的离线迁移,和数据处理,⽀持事务、并发、流程、监控、纵向和横向扩展,提供统⼀的接⼝管理和任务管理;SpringBatch是SpringSource和埃森哲为了统一业界并行处理标准为广大开发者提供方便开发的一套框架。

    官方地址:github.com/spring-projects/spring-batch

    快速入门

    pom.xml 添加


     <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-batch</artifactId>
    </dependency>

    创建BatchConfig(可以是其他类名)


    @Configuration
    @EnableBatchProcessing
    public class BatchConfig {
     // tag::readerwriterprocessor[]
     @Bean
     public FlatFileItemReader<Person> flatFileItemReader() {
      FlatFileItemReader<Person> reader = new FlatFileItemReader<>();
      reader.setResource(new ClassPathResource("sample-data.csv"));
      FixedLengthTokenizer fixedLengthTokenizer = new FixedLengthTokenizer();
      reader.setLineMapper(new DefaultLineMapper<Person>() {{
       setLineTokenizer(new DelimitedLineTokenizer() {{
        setNames(new String[]{"firstName", "lastName"});
       }});
       setFieldSetMapper(new BeanWrapperFieldSetMapper<Person>() {{
        setTargetType(Person.class);
       }});
      }});
      return reader;
     }
     @Bean
     public JdbcPagingItemReader<Person> jdbcPagingItemReader(DataSource dataSource) {
      JdbcPagingItemReader<Person> reader = new JdbcPagingItemReader<>();
      reader.setDataSource(dataSource);
      reader.setFetchSize(100);
      reader.setQueryProvider(new MySqlPagingQueryProvider() {{
       setSelectClause("SELECT person_id,first_name,last_name");
       setFromClause("from people");
       setWhereClause("last_name=:lastName");
       setSortKeys(new HashMap<String, Order>() {{
        put("person_id", Order.ASCENDING);
       }});
      }});
      reader.setParameterValues(new HashMap<String, Object>() {{
       put("lastName", "DOE");
      }});
      reader.setRowMapper(new BeanPropertyRowMapper<>(Person.class));
      return reader;
     }
     @Bean
     public JdbcBatchItemWriter<Person> jdbcBatchItemWriter(DataSource dataSource) {
      JdbcBatchItemWriter<Person> writer = new JdbcBatchItemWriter<>();
      writer.setItemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider<>());
      writer.setSql("INSERT INTO people (first_name, last_name) VALUES (:firstName, :lastName)");
      writer.setDataSource(dataSource);
      return writer;
     }
     /*@Bean
     public FlatFileItemWriter<Person> flatFileItemWriter(DataSource dataSource) {
      FlatFileItemWriter<Person> writer = new FlatFileItemWriter<>();
      writer.setAppendAllowed(true);
      writer.setEncoding("UTF-8");
    //  writer.set(dataSource);
      return writer;
     }*/
     // end::readerwriterprocessor[]
     // tag::jobstep[]
     @Bean
     public Job importUserJob(JobBuilderFactory jobBuilderFactory, JobCompletionNotificationListener listener, Step step) {
      return jobBuilderFactory.get("importUserJob")
        .incrementer(new RunIdIncrementer())
        .listener(listener)
        .start(step)
        .build();
     }
     @Bean
     public Step step1(StepBuilderFactory stepBuilderFactory, PersonItemProcessor processor, ItemWriter jdbcBatchItemWriter, ItemReader flatFileItemReader) {
      /*CompositeItemProcessor compositeItemProcessor = new CompositeItemProcessor();
      compositeItemProcessor.setDelegates(Lists.newArrayList(processor, processor));*/
      return stepBuilderFactory.get("step1")
        .<Person, Person>chunk(10)
        .reader(flatFileItemReader)
        .processor(processor)
        .writer(jdbcBatchItemWriter)
        .build();
     }
     // end::jobstep[]
    }

    Spring Batch的分层架构


    Spring Batch执行流程

    总结

    以上就是分享Spring Batch的介绍的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:Spring Batch 介绍 分享
    上一篇:登陆时验证码结合springboot的用法实例介绍 下一篇:Kotlin的注解类实例教程分享
    大前端线上培训班

    相关文章推荐

    • 理解java8中java.util.function.*pojo反射新方法(附代码)• 浅析安卓app和微信授权登录及分享完整对接(代码分享)• 教你一招搞定时序数据库在Spring Boot中的使用• 一招教你使用java快速创建Map(代码分享)• PlayFramework 完整实现一个APP(十一)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网