環境
- Windows 10, コマンド実行はコマンドプロンプトから
- Maven 3.6.0
- Java 11
Mavenで空プロジェクトを作成
アーキタイプにmaven-archetype-quickstart
を指定してmvn archetype:generate
を実行します。
> mvn -B archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DgroupId=net.hidakanoko -DartifactId=spring-boot-hello-world -Dversion=1.0.0-SNAPSHOT
> cd spring-boot-hello-world
POMの編集
prent
にspring-boot-starter-parent
を指定します。
(...省略)
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
</parent>
<dependencies>
(...省略)
spring-boot-starter-parent
を指定しておくと、各種設定をいい感じにしておいてくれるほか、依存性のversion
を省略できるようにdependency-management
セクションを提供してくれます。
Githubにそのparent pomがありました。
https://github.com/spring-projects/spring-boot/blob/master/spring-boot-project/spring-boot-starters/spring-boot-starter-parent/pom.xml
この時点でいったんmvn clean install
が成功することを確認しておきます。
>mvn clean install
(...省略)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 16.193 s
[INFO] Finished at: 2019-03-17T10:38:22+09:00
[INFO] ------------------------------------------------------------------------
依存ライブラリの追加
spring-boot-starter-web
はRESTful API, MVC, 組み込みTomcatなど、Webサービスの構築に必要なライブラリの依存性を提供してくれます。
dependencies
に下記設定を追加します。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
コマンドラインからmvn dependency:tree
を実行すると追加された依存ライブラリが確認できます。
コードの編集
すでに配置されているApp.java
を開いて次の通り編集します。
package net.hidakanoko;
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.web.bind.annotation.*;
@RestController
@EnableAutoConfiguration
public class App
{
@RequestMapping("/")
String home() {
return "Hello World!";
}
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
アノテーションと処理
-
@RestController
ステレオタイプと呼ばれるアノテーションで、コードを読む人とSpringに対してこのクラスが特定の役割を果たすことを示します。このアノテーションはクラスがWeb@Controller
であることを明示して、SpringがWebリクエストを適切に扱ってくれます。 -
@RequestMapping
リクエストのルーティング情報を定義しています。指定されたパス "/" へのリクエストはhome
メソッドで処理されます。@RestController
アノテーションが指定されている場合、メソッドの戻り値はそのまま呼び出し元に返されます。 -
@EnableAutoConfiguration
このアノテーションを追加しておくと、jarの依存性等に応じてSpringをいい感じに設定してくれます。spring-boot-starter-web
がSpring MVCやTomcatへの依存性を追加するので、このプロジェクトはWebアプリケーションであると判定され、Springもそのように設定されます。 -
main
メソッドはJavaのエントリーポイントです。ここではSpringApplication.run
を呼び出しています。run
メソッドにはプライマリソースとしてロードするクラスApp.class
とコマンドラインパラーメーターがそのまま渡されています。
実行
コマンドラインからmvn spring-boot:run
を実行してアプリケーションを起動します。
次のような出力が確認出来たらブラウザでhttp://localhost:8080
にアクセスしてみます。"Hello World"がかえって来たら成功です。
> mvn spring-boot:run
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.1.3.RELEASE)
https://docs.spring.io/spring-boot/docs/2.1.3.RELEASE/reference/htmlsingle/
https://github.com/spring-projects/spring-boot/blob/master/spring-boot-project/spring-boot-starters/spring-boot-starter-parent/pom.xml
https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web