Здесь, в Keyhole, мы очень любим Spring Batch. Во многих средах Java Enterprise все еще существует большая потребность в автоматизации перемещения данных. Spring Batch дает нам отличный старт для создания этих пакетных процессов.
Примечание: если вы находитесь в этом районе в среду вечером (8/5/15), проверьте презентацию Spring Batch управляющего партнера Keyhole Дэвида Питта на собрании группы пользователей Kansas City Spring .
Я уже несколько раз писал об использовании Groovy в качестве инструмента для быстрой разработки простого в обслуживании программного обеспечения. Я считаю, что тот факт, что Groovy по сути является Java и даже генерирует классы, которые можно запускать в JVM, является одним из его сильных сторон.
Джонни недавно написал в блоге сообщение о замене конфигурации XML для Spring Batch на JavaConfig . Поскольку все, что вы можете делать в Java, вы должны делать в Groovy, я начал задаваться вопросом, можете ли вы создать Spring Batch Groovy.
Groovy Конфигурация
Вот класс конфигурации Groovy, который я написал, чтобы увидеть.
Примечание: вы можете написать это с точкой с запятой или без нее, как считаете нужным. Я сделал это без, так что вы можете сказать, что это Groovy код.
01
02
03
04
05
06
07
08
09
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
|
package com.keyholesoftware.example import org.springframework.batch.core.Job import org.springframework.batch.core.Step import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing import org.springframework.batch.core.configuration.annotation.JobBuilderFactory import org.springframework.batch.core.configuration.annotation.StepBuilderFactory import org.springframework.batch.core.launch.support.RunIdIncrementer import org.springframework.batch.item.ItemReader import org.springframework.batch.item.ItemProcessor import org.springframework.batch.item.ItemWriter import org.springframework.batch.item.NonTransientResourceException import org.springframework.batch.item.ParseException import org.springframework.batch.item.UnexpectedInputException import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.autoconfigure.EnableAutoConfiguration import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration import groovy.json.* /** * * @author rik */ @Configuration @EnableAutoConfiguration @EnableBatchProcessing public class GroovyExampleConfig { @Autowired private JobBuilderFactory jobs @Autowired private StepBuilderFactory steps @Bean public Job job() throws Exception { return jobs.get( "groovyExample" ).start(exampleStep()).build() } @Bean public Step exampleStep() { return steps.get( "exampleStep" ) .<String, String> chunk(5) .reader(new ItemReader<String>() { boolean finished = false @Override public String read () throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException { if (!finished) { finished = true return new File( "example.txt" ).text } else { return null } } }) .processor(new ItemProcessor<String, String>() { @Override public String process(String item) throws Exception { return JsonOutput.toJson(1) } }) .writer(new ItemWriter<String>() { @Override public void write(List<? extends String> items) throws Exception { File file = new File( "exampleJson.txt" ) items.each { line -> file << line } } }) .build() } } |
Этот код открывает файл и читает весь текст в Reader. Оборачивает этот текст в JSON в процессоре, а затем записывает его обратно в файл в модуле записи. Обратите внимание, что я использую дополнения Groovy к языку Java в каждом из них. Spring Batch поставляется с отличным набором читателей и писателей, которые могут выполнить то же самое, но иногда, ради обслуживания, вы просто хотите сделать что-то простое.
Основной файл Spring Boot, который я использовал, находится здесь.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
package com.keyholesoftware.example import org.springframework.boot.SpringApplication import org.springframework.boot.autoconfigure.SpringBootApplication /** * * @author rik */ @SpringBootApplication public class GroovyBatch { public static void main(String[] args) throws Exception { System. exit (SpringApplication. exit (SpringApplication.run( GroovyExampleConfig.class, args))) } } |
В Groovy есть много функций, которые помогут вам быстро разработать приложение, но в отличие от некоторых других языков, которые я оставлю без названия, компромисс не создает сложного в обслуживании кода.
Вместо того, чтобы просто записывать результаты в примере, который я использовал, вывод JSON может быть загружен на микросервисы, которые Keyhole разрабатывает для вас. Groovy имеет отличные возможности для связи через интерфейс RESTful и был бы отличным способом для ваших пакетных процессов взаимодействовать со Службами.
Я надеюсь, что это дает вам представление о том, что вы можете сделать, комбинируя эти технологии. Не забудьте добавить тестовые классы Спока и, надеюсь, сократить будущие проблемы с обслуживанием.
Хорошее кодирование.
Ссылка: | Создание Spring Batch Groovy от нашего партнера JCG Рика Скарборо в блоге |