spring batch demo[極簡版]
1. maven
<dependency> <groupId>org.springframework.batch</groupId> <artifactId>spring-batch-core</artifactId> <version>3.0.8.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.batch</groupId> <artifactId>spring-batch-infrastructure</artifactId> <version>3.0.8.RELEASE</version> </dependency>
2. BatchTest類
public class BatchTest { @Test public void test() throws Exception {
ResourcelessTransactionManager transactionManager = new ResourcelessTransactionManager();
MapJobRepositoryFactoryBean jobRepositoryFactoryBean = new MapJobRepositoryFactoryBean(); jobRepositoryFactoryBean.setTransactionManager(transactionManager); JobRepository jobRepository = jobRepositoryFactoryBean.getObject(); SimpleJobLauncher jobLauncher = new SimpleJobLauncher(); jobLauncher.setJobRepository(jobRepository); SyncTaskExecutor taskExecutor = new SyncTaskExecutor(); jobLauncher.setTaskExecutor(taskExecutor); StepBuilderFactory stepBuilderFactory = new StepBuilderFactory(jobRepository,transactionManager); Step step = personStep(stepBuilderFactory,reader("person.csv") ,new PersonWriter(), new PersonItemProcessor()); JobBuilderFactory jobBuilderFactory = new JobBuilderFactory(jobRepository); Job job = jobBuilderFactory.get("job") .start(step) .build(); jobLauncher.run(job,new JobParameters()); } public ItemReader<Person> reader(String inputFile){ if(inputFile == null) return null; FlatFileItemReader<Person> reader = new FlatFileItemReader<>(); reader.setResource(new ClassPathResource(inputFile)); reader.setLineMapper(lineMapper()); reader.setLinesToSkip(1); ExecutionContext executionContext = new ExecutionContext(); return reader; } public Step personStep(StepBuilderFactory stepBuilderFactory, ItemReader<Person> reader, ItemWriter<Person> writer, ItemProcessor<Person,Person> processor){ return stepBuilderFactory.get("personStep") .<Person,Person>chunk(1) .reader(reader) .processor(processor) .writer(writer) .build(); } public LineMapper<Person> lineMapper(){ DefaultLineMapper<Person> lineMapper = new DefaultLineMapper<>(); DelimitedLineTokenizer lineTokenizer = new DelimitedLineTokenizer(); lineTokenizer.setDelimiter(","); lineTokenizer.setStrict(false); lineTokenizer.setNames(new String[]{"name","age"}); BeanWrapperFieldSetMapper<Person> fieldSetMapper = new BeanWrapperFieldSetMapper<>(); fieldSetMapper.setTargetType(Person.class); lineMapper.setLineTokenizer(lineTokenizer); lineMapper.setFieldSetMapper(new PersonFieldSetMapper()); return lineMapper; } }
3. PersonWriter類
public class PersonWriter implements ItemWriter<Person> {
@Override
public void write(List<? extends Person> list) throws Exception {
//TODO 插入資料庫
for(Person person:list){
System.out.println(person);
}
}
}
4. PersonItemProcessor
public class PersonItemProcessor implements ItemProcessor<Person,Person> {
public String inputFile;
public PersonItemProcessor(){}
public PersonItemProcessor(String inputFile){
this.inputFile = inputFile;
}
@Override
public Person process(Person person) {
System.out.println("handle person " + person.getName());
return person;
}
}
5. PersonFieldSetMapper類
public class PersonFieldSetMapper implements FieldSetMapper<Person> {
@Override
public Person mapFieldSet(FieldSet fieldSet) throws BindException {
String name = fieldSet.readRawString("name");
int age = fieldSet.readInt("age");
Person person = new Person();
person.setName(name);
person.setAge(age);
return person;
}
}
6. person.csv
name,age
yaoming,33
相關推薦
spring batch demo[極簡版]
1. maven<dependency> <groupId>org.springframework.batch</groupId> <artifactId>spring-batch-core</artifactId&g
spring batch demo 註解版
pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sch
cookie——登錄註冊極簡版
btn .html dsta encode ont creat lac set tle 本實例旨在最直觀地說明如何利用cookie完成登錄註冊功能,忽略正則驗證。 index.html <!doctype html> <html lang="en"&
Spring Boot 如何極簡入門?
-c auto java技術 ror 獲得 交流群 kit net service Spring Boot已成為當今最流行的微服務開發框架,本文是如何使用Spring Boot快速開始Web微服務開發的指南,我們將創建一個可運行的包含內嵌Web容器(默認使用的是Tomcat
JAVA聊天室-極簡版
實現客戶端和服務端的連線並且可以群聊*##“` 客戶端 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStrea
極簡版秒錶(java GUI)
package javaPractice; import javax.swing.*; import java.text.*; import java.util.*; import java.awt.*; import java.awt.event.*; public class Stopwat
極簡版學生管理系統
package javaBasic; import java.text.SimpleDateFormat; import java.util.*; public class StudentCard { public static void main(String[] args) { Stu
簡單快速的“桶排序”--極簡版
題目:給學生成績排序 輸入:10,3,4,7,5,5等分數 輸出:由大到小的順序排序 #include<iostream> using namespace std; int main() { //這裡假設有十個學生成績 int a[11],i
Spring的AOP極簡入門
AOP是Spring中的面向切面的程式設計,這裡簡單感受一下如何在xml檔案中配置一個切面。 如上圖所示,配置一個切面的主要思路有以下幾個步驟。 1,首先需要把實現切面功能的類宣告為一個bean,例如圖中的minstrel。 2,前面的配置都在<aop:config>標
Github Pages+Hexo部落格搭建極簡版教程
目錄 1.環境安裝 1.1安裝nodejs與git 1.2檢查是否安裝成功 2.安裝hexo 2.1安裝命令 2.2hexo初始化 3.更換hexo主題 4
機器學習各演算法思想(極簡版)
讀到的一篇不錯的文章,拿來和大家分享一下。 轉自–頭條公眾號–極數蝸牛 (1)線性迴歸 迴歸最早是由高爾頓研究子女身高與父母身高遺傳關係提出的,發現子女平均身高總是向中心迴歸而得名。其實“一分辛苦一分才”中就蘊含了線性迴歸演算法思想,比較簡單表現出才能與辛
HttpClient原始碼解析系列:第二篇:極簡版實現
極簡版的實現,核心架構的原初模型 從MinimalHttpClient從名字可以看出,是一個極簡可以用的版本,是核心設計的原初模型。所以我們就從最精簡的開始分析。 核心元素只有三個,一個引數 params,一個執行器 requestExecuto
C語言極簡版計算器
用c寫的簡單的計算器 介面如下圖所示: 感興趣可點選下載: 原始碼如下: #include "stdafx.h" #include <windows.h> #include <windowsx.h> #include "resource.h" #
一個極簡版的nodejs增刪改查
json版 var express = require('express'); var fs = require("fs"); var app = express(); app.get("/", function(req, res){ res.
【極簡版】SpringBoot+SpringData JPA 管理系統
開發十年,就只剩下這套架構體系了! >>>
Java 線程第三版 第五章 極簡同步技巧 讀書筆記
prev ear ont java else 停止 第三版 不同的 結合 一、能避免同步嗎? 取得鎖會由於下面原因導致成本非常高: 取得由競爭的鎖須要在虛擬機的層面上執行很多其它的程序代碼。 要取得有競爭鎖的線程總是必須等到鎖被釋放後。 1. 寄
Spring極簡學習(三)例項化Bean的方法有兩種
其實例項化一個Bean並沒有那麼複雜,不就是將new Bean()的過程放到Spring這裡來實現了嗎? 其實的確如此,當然了,之前的設計模式中的例項化Bean的方式Spring也得支援支援吧。 一、最直觀例項化(反射模式) xml配置 <bean id="car1
Spring極簡學習(二)給Bean加些小動作
上一篇文章已經講過了Spring是如何把自己注入到Web應用中的,並且通過配置檔案的讀取開始Bean的例項化之路。 1、例項化後、銷燬前 當然除了對常規的Bean的例項化之外,往往會產生一些特別的要求,例如在bean例項化後要做一個什麼動作,比如起一個執行緒服務。或者在bean銷
Spring極簡學習(一)載入第一步——ContextLoaderListener
Spring的功能已經算是瞭解了,也就是幫助例項化物件,並且進行一些面向切面的功能插入。 先不論上述兩者的具體實現技術,先看看在Web框架層面是如何將Spring整個引入進來的。 1、web.xml Web應用啟動後,最先解析的的就是web.xml,因此Spring載入的密碼
《Spring Boot極簡教程》第2章 Spring Boot簡史
第2章 Spring Boot簡史 Java Web開發涉及的技術比較繁雜,涉及到很多開發框架和工具(Java, Scala, Kotlin, Clojure,Groovy, Grails,Gradle, Maven, JDBC,Mysql, oracle, mongodb, Tomc