Ранее я писал в блоге о том, как написать отдельное приложение 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.