1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Spring BootでHello World

Last updated at Posted at 2019-03-20

環境

  • 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の編集

prentspring-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

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?