国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 手把手教你搭建第一個Spring Batch項目的步驟

手把手教你搭建第一個Spring Batch項目的步驟

2020-09-02 00:52沸羊羊_ Java教程

這篇文章主要介紹了手把手教你搭建第一個Spring Batch項目的步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

一、概述

Spring Batch是一個輕量級,全面的批處理框架。

一個典型的批處理過程可能是:

  • 從數據庫,文件或隊列中讀取大量記錄。
  • 以某種方式處理數據。
  • 以修改之后的形式寫回數據

Spring Batch 應用架構圖:

手把手教你搭建第一個Spring Batch項目的步驟

一個Batch(批處理)過程由一個Job(作業)組成。這個實體封裝了整個批處理過程。

一個Job(作業)可以由一個或多個Step(步驟)組成。在大多數情況下,一個步驟將讀取數據(通過ItemReader),處理數據(使用ItemProcessor),然后寫入數據(通過ItemWriter)。

JobLauncher處理啟動一個Job(作業)。

最后,JobRepository存儲關于配置和執行的Job(作業)的元數據。

二、實例

1、新建 springboot項目

創建項目傳送門

選擇配置,添加依賴,GENERATE 后導入到你的IDE

手把手教你搭建第一個Spring Batch項目的步驟

2、springboot 項目配置

2.1 在新建項目時添加依賴了,就會發現pom中引入了 spring-barch的相關依賴,如新建項目時沒有添加依賴,則需要手動添加。

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

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
		<exclusions>
			<exclusion>
				<groupId>org.junit.vintage</groupId>
				<artifactId>junit-vintage-engine</artifactId>
			</exclusion>
		</exclusions>
	</dependency>
	<dependency>
		<groupId>org.springframework.batch</groupId>
		<artifactId>spring-batch-test</artifactId>
		<scope>test</scope>
	</dependency>
</dependencies>
<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
		</plugin>
	</plugins>
</build>

2.2 為主程序的@SpringBootApplication注解添加exclude屬性,可以防止 SpringBoot 為數據庫連接自動配置 DataSource

//主程序
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class Springbatch2020829Application {
	public static void main(String[] args) {
		SpringApplication.run(Springbatch2020829Application.class, args);
	}
}

2.3 新建實體model

//Person.java
public class Person {
  private String firstName;
  private String lastName;
}
//構造函數,get,set方法, toString()方法略

2.4 配置 Spring Batch Job

2.4.1 新建 BatchConfig 類,重寫父類 setDataSource 方法

//BatchConfig.java
@Configuration
@EnableBatchProcessing
public class BatchConfig extends DefaultBatchConfigurer {
 @Override
 public void setDataSource(DataSource dataSource) {
 }
}

2.4.2 新建 HelloWorldJobConfig 類,配置 job ,step

//HelloWorldJobConfig.java
@Configuration
public class HelloWorldJobConfig {
 //新建 Job,Spring 將自動注入 jobBuilders ,stepBuilders兩個 beans
 @Bean
 public Job helloWorlJob(JobBuilderFactory jobBuilders,
   StepBuilderFactory stepBuilders) {
  return jobBuilders.get("helloWorldJob")
    .start(helloWorldStep(stepBuilders)).build();
 }
 //新建 Step,使用 StepBuilderFactory 創建
 @Bean
 public Step helloWorldStep(StepBuilderFactory stepBuilders) {
  return stepBuilders.get("helloWorldStep")
    .<Person, String>chunk(10).reader(reader())
    .processor((Function<? super Person, ? extends String>) processor()).writer(writer()).build();
 }
 //讀取數據,指定需要讀取的資源
 @Bean
 public FlatFileItemReader<Person> reader() {
  return new FlatFileItemReaderBuilder<Person>()
    .name("personItemReader")
    .resource(new ClassPathResource("csv/persons.csv"))
    .delimited().names(new String[] {"firstName", "lastName"})
    .targetType(Person.class).build();
 }
 //處理數據
 @Bean
 public PersonItemProcessor processor() {
  return new PersonItemProcessor();
 }
 //寫入數據,指定寫入路徑文件
 @Bean
 public FlatFileItemWriter<String> writer() {
  return new FlatFileItemWriterBuilder<String>()
    .name("greetingItemWriter")
    .resource(new FileSystemResource(
      "target/test-outputs/greetings.txt"))
    .lineAggregator(new PassThroughLineAggregator<>()).build();
 }
}

2.5 處理數據

//PersonItemProcessor.java
public class PersonItemProcessor
  implements ItemProcessor<Person, String> {

 private static final Logger LOGGER =
   LoggerFactory.getLogger(PersonItemProcessor.class);
 //打印日志信息	
 @Override
 public String process(Person person) throws Exception {
  String greeting = "Hello " + person.getFirstName() + " "
    + person.getLastName() + "!";
	
  LOGGER.info("converting '{}' into '{}'", person, greeting);
  return greeting;
 }
}

2.6 測試 Spring Batch 示例

//PersonItemProcessor.java
public class PersonItemProcessor
  implements ItemProcessor<Person, String> {

 private static final Logger LOGGER =
   LoggerFactory.getLogger(PersonItemProcessor.class);
 //打印日志信息	
 @Override
 public String process(Person person) throws Exception {
  String greeting = "Hello " + person.getFirstName() + " "
    + person.getLastName() + "!";
	
  LOGGER.info("converting '{}' into '{}'", person, greeting);
  return greeting;
 }
}

2.7 啟動項目,在 target/test-outputs/greetings.txt 文件中找到結果。

手把手教你搭建第一個Spring Batch項目的步驟

三、理解

JobRepository

從字面上可以理解為"任務倉庫",如果把一個批處理比作一個任務的話,這個倉庫存儲了很多這種任務。JobRepository 會將任務包括其狀態等數據持久化,存儲到許多數據庫中。Spring Batch 默認會提供一個 SimpleJobRepository 倉庫,方便我們開啟批處理。

Job

“任務”。每個批處理都是一個任務,除了任務本身之外,任務也存在成功和失敗等等狀態,所以可以引出兩個概念 JobInstance 與 JobExecution 。job 是一個接口,JobInstance 是其實現,代表了“任務”本身,提供了 getJobName、getInstanceId 等方法供我們獲取任務本身的一些屬性。JobExecution 代表任務的狀態,如創建時間、結束時間、結束狀態、拋出的異常等等。

Step

“步驟”。批處理任務肯定有非常多的步驟,如一個最基本的數據庫同步,從 A 數據庫讀取數據,存入到 B 數據庫中,這里就分為了兩個步驟。在 Spring Batch 中,一個任務可以有很多個步驟,每個步驟大致分為三步:讀、處理、寫,其對應的類分別就是 Item Reader,Item Processor,Item Writer。

JobLauncher

“任務裝置”。如火箭發射裝置就是用來操作火箭發射的,這里的任務裝置就是用來執行任務的。

到此這篇關于手把手教你搭建第一個Spring Batch項目的步驟的文章就介紹到這了,更多相關Spring Batch項目搭建內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_42653522/article/details/108298597

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 日韩av免费在线观看 | 蜜桃av网址 | 免费裸体无遮挡黄网站免费看 | 亚洲综合在线视频 | 精品成人av一区二区三区 | 精品久久99 | 九九亚洲 | 成年人免费观看在线视频 | 俺去俺来也在线www色官网 | 成人精品一区二区 | 国产精品国产三级国产aⅴ9色 | 美日韩免费视频 | 在线成人一区 | 欧美日韩网站 | 99精品国产热久久91蜜凸 | 国产午夜在线 | 爱色影wwwcom| 最近免费中文字幕在线视频2 | 欧美日韩中文 | 婷婷久| 欧美疯狂性受xxxxx另类 | 欧美精品一区视频 | 欧美在线视频一区二区 | 国产精品亚洲一区二区三区在线 | 国产精品suv一区二区 | 久久九九这里只有精品 | 国产主播福利 | 国产99在线 | 亚洲 | 国产成在线观看免费视频 | 国产精品久久久久久久天堂 | 亚洲五码中文字幕 | 成人免费在线观看视频 | 亚洲成av人影片在线观看 | 99精品欧美一区二区三区综合在线 | 日韩成人免费 | 91黄色片视频 | 国内精品视频在线观看 | 99精品国产一区二区三区 | 国变精品美女久久久久av爽 | 国产大学生一区 | 91精品国产欧美一区二区 |