激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Spring Batch入門教程篇

Spring Batch入門教程篇

2020-11-12 17:32翟永超 Java教程

這篇文章主要給大家介紹了Spring Batch入門的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。

SpringBatch介紹:

SpringBatch 是一個(gè)大數(shù)據(jù)量的并行處理框架。通常用于數(shù)據(jù)的離線遷移,和數(shù)據(jù)處理,?持事務(wù)、并發(fā)、流程、監(jiān)控、縱向和橫向擴(kuò)展,提供統(tǒng)?的接?管理和任務(wù)管理;SpringBatch是SpringSource和埃森哲為了統(tǒng)一業(yè)界并行處理標(biāo)準(zhǔn)為廣大開發(fā)者提供方便開發(fā)的一套框架。

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

  • SpringBatch 本身提供了重試,異常處理,跳過,重啟、任務(wù)處理統(tǒng)計(jì),資源管理等特性,這些特性開發(fā)者看重他的主要原因;
  • SpringBatch 是一個(gè)輕量級(jí)的批處理框架;
  • SpringBatch 結(jié)構(gòu)分層,業(yè)務(wù)與處理策略、結(jié)構(gòu)分離;
  • 任務(wù)的運(yùn)行的實(shí)例狀態(tài),執(zhí)行數(shù)據(jù),參數(shù)都會(huì)落地到數(shù)據(jù)庫(kù);

快速入門

pom.xml 添加

?
1
2
3
4
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-batch</artifactId>
</dependency>

創(chuàng)建BatchConfig(可以是其他類名)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
@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的分層架構(gòu)

  • Insfrastructure 策略管理:包括任務(wù)的失敗重試,異常處理,事務(wù),skip,以及數(shù)據(jù)的輸入輸出(文本文件,DB,Message)
  • Core: springBatch 的核心,包括JobLauch,job,step等等
  • Application: 業(yè)務(wù)處理,創(chuàng)建任務(wù),決定任務(wù)的執(zhí)行方式(定時(shí)任務(wù),手動(dòng)觸發(fā)等)

Spring Batch入門教程篇

Spring Batch執(zhí)行流程

Spring Batch入門教程篇

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)服務(wù)器之家的支持。

原文鏈接:http://blog.didispace.com/spring-batch-1/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 中文国产在线视频 | 欧洲精品久久久 | 久久亚洲精品久久国产一区二区 | 久久网国产 | 成人一级在线 | 国产一区二区三区在线视频 | 国产一区二区在线观看视频 | 色域tv| 亚洲人成在线播放 | 好吊色欧美一区二区三区四区 | 视频在线91 | 99在线啪| 国产午夜精品一区二区三区视频 | 91av在线免费观看 | 亚洲视频在线一区二区 | av免费在线观看免费 | 他也色在线视频 | 欧美a v在线| 国产一级一片免费播放 | 成人综合区一区 | 国产小视频一区 | 久久久一区二区三区四区 | 中文字幕在线播放视频 | 激情在线免费观看 | qyl在线视频精品免费观看 | 欧美一区久久久 | 在线观看视频日本 | 久久这里只有精品1 | 黄色网址在线免费 | 成人青青草 | 毛片免费一区二区三区 | av成人一区二区 | 日韩一级免费毛片 | 欧美淫交 | 福利免费在线 | 欧产日产国产精品v | 日韩毛片在线看 | 欧美精品久久久久久久久老牛影院 | 日本高清一级片 | 亚洲小视频在线播放 | 国产流白浆高潮在线观看 |