Help us understand the problem. What is going on with this article?

Eclipse+SpringBoot+MavenでHelloWorld

More than 3 years have passed since last update.

SpringBootでHelloWorldしたので手順メモです。
Eclipseで完結しています。所要時間は30分程度です。

環境

Java7
Eclipse4.5 MARS
Elipseプラグイン版STS3.8.3

事前準備

EclipseにSTSをインストールしておいてください。
Tomcatは要りません。

プロジェクト作成

ファイル→新規→その他→Spring Starter Project
名前「bootsample」
グループ「com.bootsample」
成果物:「bootsample」
説明:「SpringBoot Sample Project」
パッケージ:「com.bootsample」

それ以外はデフォルトで次へ→Webにチェックを入れて完了

設定ファイルの記述

①pom.xml

変更なし
以下の通りになっていることを確認してください。

pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.bootsample</groupId>
    <artifactId>bootsample</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>boot</name>
    <description>SpringBoot sample Project</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.7</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

bootプロジェクト上で右クリックして以下の操作をしてください
・Maven→プロジェクトの更新→OK
・実行→Maven install

メインメソッドの確認

src/main/javaの中にある「com.bootsample」パッケージ内に
Javaクラスファイル「BootApplication.java」ができていることを確認します。

BootApplication.java
package com.bootsample;

import org.springframework.web.bind.annotation.SpringApplication;

@SpringBootApplication
public class BootApplication {

    public static void main(String[] args){
        SpringApplication.run(BootApplication.class,args)
    }
}

@SpringBootApplicationは「私がSpirngBootのプロジェクトですやで」と認識させる重要なアノテーションです。
mainメソッドがアプリケーション起動のトリガーとなりますので必ず残すようにしてください。

コントローラーの作成

src/main/javaの中にある「com.bootsample」パッケージ内に
Javaクラスファイル「HelloController.java」を作成します。
以下の通り記述してください。

HelloController.java
package com.bootsample;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @RequestMapping(value="/")
    private String hello(){
        return "Hello world!!";
    }
}

@RestControllerをつけることでクラスをコントローラーとして認識させます。
@RequestMappingはアクセス時のURLになります。今回はlocalhost:8080/でアクセスするため、/だけにしています。

こんにちわ世界!!

プロジェクトを右クリックして実行→SpringBootAppをクリックするとアプリケーションが起動します。
Started BootApplicationみたいな文字列がコンソールに出ていたら起動成功です。
早速こんにちわ世界してみましょう。
http://localhost:8080/

二度目以降はツールバーのサーバー起動ボタンと停止ボタンでもサーバーの起動と停止ができます。

SpringBootのすごいところ

記述量が少なくて済む

Javaのプログラムは得てしてxml地獄やライブラリの輪廻に巻き込まれがちですが、SpringBootはこの辺がごっそりそぎ落とされているのが本当に楽ちんです。

実装がとにかく楽

HTMLファイルのままJSP化できるThymeleaf、ソースの反映を高速に行ってくれるSpringLoaded、アプリケーションの状態をWebAPI経由で取得できるSprintBootActuator(localhost:8080/envみたいに使える)等のSpring選りすぐり便利ツールがまとめられています。Springのpomが部品ごとに記述するとしたら、SpringBootでは機能ごとにオールインワンでライブラリをpomで受け取ることができます。もちろん部品単品でもpomれます。

SpringBootのここに注意

細かいバージョン指定が面倒

SpringBootライブラリでは原則としてその時点で最新のライブラリを取得します。springMVCだけ古いバージョンを使いたいなという場合には別途pomる必要がある上、最新版は依存関係ライブラリから除去できません。依存関係ライブラリも肥大化しがちです。

warファイルではなくjarファイルができる

ビルドするとjarファイルができます。これは注意しないといけません。
SpringBootにはtomcat8が組み込まれていてそのままの状態で動かせるのがSpringBootの強みですが、Tomcatが入っている既存のLinux環境で稼働させたい場合にはちょっと面倒なことになります。
場合によってはjarファイルと一度分解してtomcat8を抜き取ってまたwarで固めて・・・という手順を踏むことになるわけですが、それではSpringBootの楽ちんでスピーディなところを丸々殺してしまうことになるわけでちょっと考え物です。

SpringFrameworkの理解が必要

いろいろ簡略化されてはいますが結局のところ仕組みはSpringなわけです。
Spring未経験者はそれなりに学習コストが必要だと思います。
Java初心者ともなると、少々厳しいと思います。

あとがき

大規模開発での運用は難しいと思いますがスピード感のあるJavaアプリ開発をしたいという場合には使えると思います。
流行ってほしいフレームワークです。

s_hino
Javaが本業です。わかりやすさ重視です。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした