1
1
package org .batch .config ;
2
2
3
+ import java .util .List ;
4
+ import java .util .StringTokenizer ;
5
+ import java .util .UUID ;
3
6
import javax .sql .DataSource ;
4
7
import org .batch .domain .Person ;
5
8
import org .batch .process .JobCompletionNotificationListener ;
10
13
import org .springframework .batch .core .configuration .annotation .JobBuilderFactory ;
11
14
import org .springframework .batch .core .configuration .annotation .StepBuilderFactory ;
12
15
import org .springframework .batch .core .launch .support .RunIdIncrementer ;
16
+ import org .springframework .batch .item .ItemReader ;
17
+ import org .springframework .batch .item .ItemWriter ;
18
+ import org .springframework .batch .item .NonTransientResourceException ;
19
+ import org .springframework .batch .item .ParseException ;
20
+ import org .springframework .batch .item .UnexpectedInputException ;
13
21
import org .springframework .batch .item .database .BeanPropertyItemSqlParameterSourceProvider ;
14
22
import org .springframework .batch .item .database .JdbcBatchItemWriter ;
15
23
import org .springframework .batch .item .database .builder .JdbcBatchItemWriterBuilder ;
19
27
import org .springframework .beans .factory .annotation .Autowired ;
20
28
import org .springframework .context .annotation .Bean ;
21
29
import org .springframework .context .annotation .Configuration ;
30
+ import org .springframework .context .annotation .Profile ;
22
31
import org .springframework .core .io .ClassPathResource ;
23
32
24
33
/**
25
34
* @author zacconding
26
35
* @Date 2018-03-25
27
36
* @GitHub : https://github.com/zacscoding
28
37
*/
29
-
38
+ @ Profile ( "csv" )
30
39
@ Configuration
31
40
@ EnableBatchProcessing
32
41
public class BatchConfiguration {
@@ -40,8 +49,9 @@ public class BatchConfiguration {
40
49
// == tag :: reader writer process []
41
50
@ Bean
42
51
public FlatFileItemReader <Person > reader () {
43
- return new FlatFileItemReaderBuilder <Person >().name ("personItemReader" ).resource (new ClassPathResource ("sample-data.csv" )).delimited ()
44
- .names (new String [] {"firstName" , "lastName" }).fieldSetMapper (new BeanWrapperFieldSetMapper <Person >() {{
52
+ return new FlatFileItemReaderBuilder <Person >().name ("personItemReader" )
53
+ .resource (new ClassPathResource ("sample-data.csv" )).delimited ()
54
+ .names (new String []{"firstName" , "lastName" }).fieldSetMapper (new BeanWrapperFieldSetMapper <Person >() {{
45
55
setTargetType (Person .class );
46
56
}}).build ();
47
57
}
@@ -53,22 +63,25 @@ public PersonItemProcessor processor() {
53
63
54
64
@ Bean
55
65
public JdbcBatchItemWriter <Person > writer (DataSource ds ) {
56
- return new JdbcBatchItemWriterBuilder <Person >().itemSqlParameterSourceProvider (new BeanPropertyItemSqlParameterSourceProvider <>())
57
- .sql ("INSERT INTO people (first_name, last_name) VALUES (:firstName, :lastName)" ).dataSource (ds ).build ();
66
+ return new JdbcBatchItemWriterBuilder <Person >()
67
+ .itemSqlParameterSourceProvider (new BeanPropertyItemSqlParameterSourceProvider <>())
68
+ .sql ("INSERT INTO people (first_name, last_name) VALUES (:firstName, :lastName)" ).dataSource (ds ).build ();
58
69
}
59
70
// == end :: reader writer process []
60
71
61
72
// == tag :: jobstep[]
62
73
@ Bean
63
74
public Job importUserJob (JobCompletionNotificationListener listener , Step step1 ) {
64
- return jobBuilderFactory .get ("importUserJob" ).incrementer (new RunIdIncrementer ()).listener (listener ).flow (step1 ).end ().build ();
75
+ return jobBuilderFactory .get ("importUserJob" ).incrementer (new RunIdIncrementer ()).listener (listener ).flow (step1 )
76
+ .end ().build ();
65
77
}
66
78
67
79
@ Bean
68
80
public Step step1 (JdbcBatchItemWriter <Person > writer ) {
69
- return stepBuilderFactory .get ("step1" ).<Person , Person >chunk (2 ).reader (reader ()).processor (processor ()).writer (writer ).build ();
81
+ return stepBuilderFactory .get ("step1" ).<Person , Person >chunk (2 )
82
+ .reader (reader ())
83
+ .processor (processor ())
84
+ .writer (writer ).build ();
70
85
}
71
86
// == end :: job step[]
72
-
73
-
74
87
}
0 commit comments