概要
Eclipse・Gradle・SpringBootでHelloWorldをやってみました。
その時の実施手順メモをチュートリアルっぽくしたので公開したいと思います。
順に実施するとSpringBootを使えるようになった気分になれます。(たぶん
目次:
Ⅰ.Eclipse設定
Ⅱ.Gradle設定
Ⅲ.SpringBootでHelloWorld
Ⅳ.HelloWorldをちょっと元気にしてみる
Ⅰ.Eclipse設定
1.Eclipseダウンロード
・以下のサイトよりEclipseダウンロード。
http://mergedoc.osdn.jp/
今回使用するバージョン:Oxygen(Full Edition)
・Cドライブ直下に展開。
※注意:好きな場所において問題ないが、階層が深くなると動かない場合がある。
・Eclipseを起動。
以下のファイルを選択し起動。
C:/pleiades/eclipse/eclipse.exe
2.プロジェクト作成
・メニューバーからファイル - 新規 - Gradleプロジェクトを選択。
・プロジェクト名に demo を記入。
・完了を左クリック。
Ⅱ.Gradle設定
1.build.gradle書き換え
・demoプロジェクト直下のbuild.gradleファイルを開く。
・build.gradleの内容をすべて削除。
・以下の内容に書き換え保存。
buildscript {
ext {
springBootVersion = '1.5.8.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'spring-boot'
jar {
baseName = 'demo'
version = '1.0.0'
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenCentral()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-web:1.5.8.RELEASE')
compile('org.springframework.boot:spring-boot-starter-thymeleaf')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
2.Gradle設定の反映
・demoプロジェクトを右クリック - Gradle - Gradleプロジェクトのリフレッシュをクリック。
Ⅲ.SpringBootでHelloWorld
1.HelloWorld用のパッケージ作成
・src/main/javaを右クリック - 新規 - パッケージ をクリック。
・名前に「hello.controller」を記入。
・完了を左クリック。
2.サーバ起動用クラス作成
・hello.controllerパッケージを右クリック - 新規 - クラス をクリック。
・パッケージに「hello」を記入。
・名前に「HelloApplication」を記入。
・完了をクリック。
・以下のように書き換え保存。
package hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloApplication {
public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
}
}
3.起動確認:ちょっと試しにサーバ起動
・HelloApplication.javaを右クリック - 実行 - javaアプリケーション をクリック。
コンソールに起動メッセージが表示される。
・Webブラウザから以下のURLにアクセス。
http://localhost:8080
ページを作成していないため、以下のエラーページが表示される。
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Sat Nov 04 17:08:37 JST 2017
There was an unexpected error (type=Not Found, status=404).
No message available
・コンソールの■ボタンを押してサーバを停止。
4.Controller作成
・controllerパッケージを右クリック - 新規 - クラス をクリック。
・名前に「HelloController」を記入。
・完了を左クリック。
・HelloController.javaを以下のように書き換え保存。
package hello.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* HelloController
*
* @author shiro
*
*/
@Controller
public class HelloController {
/**
* 文字列をそのままリクエスト先に返却する。
*
* @return 文字列がそのまま表示される。
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
@ResponseBody
public String topPage() {
return "文字列がそのまま表示される。";
}
/**
* HelloWorldページ
*
* @return HelloWorldページ
*/
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String hello() {
return "hello/hello";
}
}
5.起動確認
文字列がそのまま表示される。
・コンソールの■ボタンを押してサーバを停止。
6.HTML格納用リソースフォルダ作成
・demoプロジェクトを右クリック - 新規 - フォルダー をクリック
・親フォルダーを入力または選択に「demo/src/main/resources/templates」を記入。
・フォルダー名に「hello」を記入。
・完了を左クリック。
・demoプロジェクトを右クリック - Gradle - Gradleプロジェクトのリフレッシュをクリック。
※Gradleプロジェクトのリフレッシュは必須ではありません。やるとちょっとしたことが起きます( *´艸`)
7.HTML作成
・helloフォルダーをクリック - 新規 - その他 - Web - HTMLファイル を選択し次へ
・ファイル名に hello.html を記入。
・完了を左クリック。
・以下のように書き換え保存。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"></meta>
<title>Hello</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
8.起動確認
・HelloApplication.javaを右クリック - 実行 - javaアプリケーション をクリック。
コンソールに起動メッセージが表示される。
・Webブラウザから以下のURLにアクセス。
http://localhost:8080/hello
以下がページに表示される。
Hello World
・コンソールの■ボタンを押してサーバを停止。
Ⅳ.HelloWorldをちょっと元気にしてみる
1.HTMLの修正
・Ⅲ.7.で作成したhello.htmlを開く。
・以下のように書き換え保存。
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8"></meta>
<title>Hello</title>
</head>
<body>
<span th:each="helloDto : ${helloDtoList}" th:style="|font-size: ${helloDto.getFontSize()}px|" th:text="${helloDto.getWord()}"></span>
</body>
</html>
2.gradle設定変更
・demoプロジェクト直下のbuild.gradleファイルを開く。
・以下のように書き換え保存。
※dependenciesに「compile('org.projectlombok:lombok:1.16.18')」を追加
buildscript {
ext {
springBootVersion = '1.5.8.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'spring-boot'
jar {
baseName = 'demo'
version = '1.0.0'
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenCentral()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-web:1.5.8.RELEASE')
compile('org.springframework.boot:spring-boot-starter-thymeleaf')
compile('org.projectlombok:lombok:1.16.18')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
3.Gradle設定の反映
・demoプロジェクトを右クリック - Gradle - Gradleプロジェクトのリフレッシュをクリック。
4.Eclipseにlombokインストール
・プロジェクトと外部の依存関係 - lombok-1.16.18.jarを右クリック - 実行 - Javaアプリケーションをクリック。
※Can't find IDEが表示された場合はOKをクリックし閉じる。
・Specify location...を左クリック。
・ファイル名に「C:/pleiades/eclipse/eclipse.exe」を入力しSelectを左クリック。
※Ⅰ.1.で起動したeclipse.exeの格納場所です。
・IDEsにファイル名に入力したパスが表示され、選択状態になっていることを確認。
・install/updateを左クリック。
・Install successfulが表示される。
・Quit Installerを左クリックし閉じる。
5.Dto用のパッケージ作成
・src/main/javaを右クリック - 新規 - パッケージ をクリック。
・名前に「hello.dto」を記入。
・完了を左クリック。
6.Dto作成
・dtoパッケージを右クリック - 新規 - クラス をクリック。
・名前に「HelloDto」を記入。
・完了を左クリック。
・HelloDto.javaを以下のように書き換え保存。
package hello.dto;
import lombok.Getter;
import lombok.Setter;
/**
*
* Hello Dto
*
* @author shiro
*
*/
@Getter
@Setter
public class HelloDto {
/** フォントサイズ */
private int fontSize;
/** 表示文字 */
private String word;
}
7.Service用のパッケージ作成
・src/main/javaを右クリック - 新規 - パッケージ をクリック。
・名前に「hello.service」を記入。
・完了を左クリック。
8.Service作成
・serviceパッケージを右クリック - 新規 - クラス をクリック。
・名前に「HelloService」を記入。
・完了を左クリック。
・HelloService.javaを以下のように書き換え保存。
package hello.service;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import org.springframework.stereotype.Service;
import hello.dto.HelloDto;
/**
* HelloService
*
* @author shiro
*
*/
@Service
public class HelloService {
/**
* 与えられた数値からfizzbuzz結果リストを作成する。
*
* @param n 数値
* @return fizzbuzz結果リスト
*/
public List<HelloDto> numToFizzbuzzList(int num) {
List<HelloDto> helloDtoList = new ArrayList<HelloDto>();
for (int i = 1; i < num; i++) {
HelloDto helloDto = new HelloDto();
helloDto.setFontSize(randomFontSize());
helloDto.setWord(fizzbuzz(i));
helloDtoList.add(helloDto);
}
return helloDtoList;
}
/**
* 与えられた数値のfizzbuzz結果を返却する。
* Hello!, World!, HelloWorld!! のいずれかを返却する。
*
* @param num 数値
* @return fizzbuzz 結果
*/
private String fizzbuzz(int num) {
if (num % 15 == 0) {
return "HelloWorld!!";
}else if (num % 3 == 0){
return "Hello!";
}else if (num % 5 == 0){
return "World!";
}else {
return num + "!";
}
}
/**
* 10~100のランダムな数値を返却する
*
* @return ランダムな数値
*/
private int randomFontSize() {
Random random = new Random();
return ((random.nextInt(10) * 10) + 10);
}
}
9.Controller修正
・controllerパッケージの「HelloController.java」を開く。
・以下のように書き換え保存。
package hello.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import hello.dto.HelloDto;
import hello.service.HelloService;
/**
* HelloController
*
* @author shiro
*
*/
@Controller
public class HelloController {
@Autowired
HelloService helloService;
/**
* 文字列をそのままリクエスト先に返却する。
*
* @return 文字列がそのまま表示される。
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
@ResponseBody
public String topPage() {
return "文字列がそのまま表示される。";
}
/**
* HelloWorldページ
*
* @param num fizzbuzzする回数
* @param model fizzbuzz結果リスト
* @return HelloWorldページ
*/
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String hello(@RequestParam int num, Model model) {
List<HelloDto> helloDtoList = helloService.numToFizzbuzzList(num);
model.addAttribute("helloDtoList", helloDtoList);
return "hello/hello";
}
}
10.起動確認
1! 2! Hello! 4! World!・・・・(ry
・コンソールの■ボタンを押してサーバを停止。
余談
さくっと簡単に出来ちゃいますね。と言いつつ変なところで詰まったり・・。
単体テストも軽く触ろうかと思いましたが力尽きました。
気が向いたら追記したいと思います。
今回は以上です。
参考