あずきみるくのあずきはニガテ - for Engineer

ひよっこプログラマがやってみたことやハマっちゃったことなど、備忘録的な感じで書いていきます。

SpringBootをEclipse、Gradleで使ってみる - (3)Let's Hello World

と、いうわけで、第3回はようやくHelloWorldをやってみようと思います。

(ブログ書きながらやるのって時間かかるのねw)

 

参考にさせていただいたのはこちらのサイト。

ただし、ここではMavenを利用してるので、Gradle向けに変更が必要です。


Spring Bootで高速アプリ開発 | Developers.IO

 

Gradle向けの書き方はこちらを参考にしました。

Spring Boot Reference Guide

spring-boot - SpringBootとGradleでHelloWorld - Qiita

 

 

1)「build.gradle」を編集する

 eclipseでプロジェクトを作成すると、デフォルトですでに記述されてますが、ごっそり、以下の通りに入れ替えました。


apply plugin: 'java'
apply plugin: 'eclipse-wtp'

// バージョン情報は変数にしておきます ext { springBootVersion = '1.2.1.RELEASE' } // リポジトリの設定 repositories { jcenter() }
// 依存関係の設定 dependencies { // SpringBoot compile "org.springframework.boot:spring-boot-starter-web:$springBootVersion" compile "org.springframework.boot:spring-boot-starter-test:$springBootVersion" // gradle plugin compile "org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion" }

 

2)ビルドの実行

 編集した後は「プロジェクト名右クリック>Gradle>Refresh All」でbuildを実行します。そうすると、鬼のような数のライブラリが落とされます。

下のような表示がコンソール画面に出れば、ビルド完了です。

BUILD SUCCESSFUL

Total time: 7.776 secs
[sts] -----------------------------------------------------
[sts] Build finished succesfully!
[sts] Time taken: 0 min, 7 sec
[sts] -----------------------------------------------------

今後もbuild.gradleを編集するたびにリフレッシュは必要になりますので覚えておいたほうがよいです〜。

 

3)起動ポイント(Application.java)の作成

任意ですが。。。クラスたちを作成する前に、デフォルトで作成されているクラス(「src/main/java」「src/main/test」のそれぞれの配下にいる「org.gradle」配下の子達)はややこしくなるので消しておきます。

(あずきはパッケージごと削除しました)

作成するところは以下のとおり。 

(プロジェクト)>  src/main/java >(任意のパッケージ)>  Application.java

 

mainメソッドを設定して、「run」を起動するだけです。

Application.java

package sample.hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application {
  public static void main(String[] args) throws Exception {
    SpringApplication.run(Application.class, args);
  }
}

 

4) コントローラ(HelloController.java)の作成

起動ポイントが作成できたら、次は実際にHelloWorldを表示してもらう部分の作成です。

コントローラはコントロールするのが役割なので、本当はちゃんとJSPとかを用意したほうがいい気もするのですが、ここはとりあえず表示するだけ、ってことで、全部コントローラに記述しちゃいます。

作成するところは以下のとおり。 

(プロジェクト)>  src/main/java >(任意のパッケージ)> HelloController.java

うん、さっきと一緒ですねw

 

HelloController.java

package sample.hello;

import org.springframework.stereotype.Controller;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@EnableAutoConfiguration
public class HelloController 
{
    @RequestMapping("/")
    @ResponseBody
    public String home() {
        return "Hello World!";
    }
}

 

@RequestMappingでパスを指定して、@ResponseBodyで表示する内容を直接ソースコード内に記載しています。

 

5)Hello World!!

さて、これだけです。web.xmlとか書いてません。

とりあえずですが、JSPも用意はしていません。

で、ここからがポイントなのですが、再度、編集後に念のためbuildを実行した上で、

 

「プロジェクト名を右クリック>Run As >Spring Boot App」

で起動します。

f:id:azuki-milk-lush:20150119030332p:plain

 

コンソールにこんな感じで表示されていれば、きっといけてます。

f:id:azuki-milk-lush:20150119030459p:plain

では、早速ブラウザでいつものを叩いてみましょう。

いつもの→「http://localhost:8080/

f:id:azuki-milk-lush:20150119030808p:plain

 

はい、無事表示されましたでしょうか。

 

ここでひとつ、アホなあずきがはまったポイントがあります。

こんな簡単なところで、あずきは、ずっと「404エラー」を出しまくっていたのです。

ずっと、eclipsetomcatを起動させて、ブラウザを叩いてたんですね。

「アホが!!」と思ったあなた、ありがとうございます。

そう、SpringBootにはもともとtomcatが内蔵されていて、「Spring Boot App」を起動した時点で、内蔵されたtomcatが動いていたのです。

つまり、二重でtomcatを立ち上げていたのですね。

残念です。。。

 

こんなアホなあずきですが、これからHelloWorldもできたことだし、ちょっとづつ、何かしら作っていこうと思います。

とりあえず、次はJSPに表示させて、DBに接続させて、って感じでやっていきたいなー。