Ранее я писал в блоге о том, как написать отдельное приложение Spring Integration.
Spring Boot значительно упрощает создание этого автономного приложения.
Простым потоком было опросить службу USGS, предоставляющую информацию о землетрясениях во всем мире, и зарегистрировать эту информацию. Процесс, описанный с помощью Spring Integration, выглядит следующим образом:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
< int:inbound-channel-adapter channel = "quakeinfotrigger.channel" expression = "''" > < int:poller fixed-delay = "60000" ></ int:poller > </ int:inbound-channel-adapter > < int:channel id = "quakeinfo.channel" > < int:queue capacity = "10" /> </ int:channel > < int:channel id = "quakeinfotrigger.channel" ></ int:channel > < int-http:outbound-gateway id = "quakerHttpGateway" request-channel = "quakeinfotrigger.channel" http-method = "GET" expected-response-type = "java.lang.String" charset = "UTF-8" reply-timeout = "5000" reply-channel = "quakeinfo.channel" > </ int-http:outbound-gateway > < int:logging-channel-adapter id = "messageLogger" log-full-message = "true" channel = "quakeinfo.channel" level = "ERROR" > < int:poller fixed-delay = "5000" ></ int:poller > </ int:logging-channel-adapter > |
Перед загрузкой способ написания основной программы для запуска этого потока был бы следующим:
1
2
3
4
5
6
7
8
9
|
package standalone; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main(String[] args) { ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext( "classpath:/httpgateway.xml" ); applicationContext.registerShutdownHook(); } } |
С Spring-boot, однако, конфигурация ИМХО проще:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
package standalone; import org.springframework.boot.SpringApplication; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.ImportResource; @Configuration @ImportResource ( "classpath:httpgateway.xml" ) public class Main { public static void main(String[] args) { SpringApplication.run(Main. class , args); } } |
И с этим изменением, наряду с плагином spring-boot-maven-plugin, приложение может быть запущено следующим образом:
1
|
mvn spring-boot:run |
Я приложил очень мало усилий для исправления этого сценария запуска, внеся изменения в плагин для запуска приложения без необходимости сначала вручную запускать этап компиляции.
Более того, плагин spring-boot-maven-plugin предоставляет инструменты для упаковки всего приложения в исполняемый файл jar, который запускается на этапе упаковки, в соответствии с плагином shade:
1
|
mvn package |
и исполняемый файл jar запускается так:
1
|
java -jar target/si-standalone-sample- 1.0 -SNAPSHOT.jar |
- Обновленный проект с этим изменением доступен по адресу github — https://github.com/bijukunjummen/si-standalone-sample.