Spring起動非Webアプリケーションの例
Springブートでは、非Webアプリケーションを作成するために、
CommandLineRunner`を実装し、
run`メソッドをオーバーライドします。例えば:
import org.springframework.boot.CommandLineRunner; @SpringBootApplication public class SpringBootConsoleApplication implements CommandLineRunner { public static void main(String[]args) throws Exception { SpringApplication.run(SpringBootConsoleApplication.class, args); } //access command line arguments @Override public void run(String... args) throws Exception { //do something } }
1.プロジェクトの構成
標準のMavenプロジェクト構造。
プロジェクトの依存関係
`spring-boot-starter`のみ
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4__0__0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.mkyong</groupId> <artifactId>spring-boot-simple</artifactId> <packaging>jar</packaging> <version>1.0</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.1.RELEASE</version> </parent> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> </dependencies> <build> <plugins> <!-- Package as an executable jar/war --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
3.春
3.1メッセージを返すサービス。
HelloMessageService.java
package com.mkyong.service; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @Service public class HelloMessageService { @Value("${name:unknown}") private String name; public String getMessage() { return getMessage(name); } public String getMessage(String name) { return "Hello " + name; } }
application.properties
name=mkyong
3.2 `CommandLineRunner`の例です。このSpring Bootを実行すると、 `run`メソッドがエントリポイントになります。
SpringBootConsoleApplication.java
package com.mkyong; import com.mkyong.service.HelloMessageService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.Banner; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import static java.lang.System.exit; @SpringBootApplication public class SpringBootConsoleApplication implements CommandLineRunner { @Autowired private HelloMessageService helloService; public static void main(String[]args) throws Exception { //disabled banner, don't want to see the spring logo SpringApplication app = new SpringApplication(SpringBootConsoleApplication.class); app.setBannerMode(Banner.Mode.OFF); app.run(args); } //Put your logic here. @Override public void run(String... args) throws Exception { if (args.length > 0) { System.out.println(helloService.getMessage(args[0].toString())); } else { System.out.println(helloService.getMessage()); } exit(0); } }
4.デモ
パッケージ化して実行します。
## Go to project directory ## package it $ mvn package $ java -jar target/spring-boot-simple-1.0.jar Hello mkyong $ java -jar target/spring-boot-simple-1.0.jar "donald trump" Hello donald trump
ソースコードをダウンロードする
ダウンロード:
spring-boot-non-web-example.zip
(5 KB)
参考文献
JavaDoc]