tamuraです。 Spring Frameworkを使ったことがありませんが、始め方について簡単にまとめてみました。 使用するバージョンは4系です。
目標
- ブラウザでhello worldを表示する。
- http://localhost:8080/greeting に接続すると “Hello, World!” というメッセージが表示される。
- http://localhost:8080/greeting?name=User に接続すると “Hello, User!” というメッセージが表示される。
Serving Web Content with Spring MVC ここの内容をやっていきます。 Gradleをちゃんと使ったことがないので、ちゃんと使ったことのあるMavenでやっていきます。
JDKインストール
Java8をインストールします。
http://www.oracle.com/technetwork/java/javase/downloads/index.html ここからJava SE 8uxxを落としてインストールします。
Windows
set JAVA_HOME=<インストールディレクトリ>
set PATH=%JAVA_HOME%\bin;%PATH%
Mac/Unix(sh系)
export JAVA_HOME=<インストールディレクトリ>
export PATH=${JAVA_HOME}/bin:$PATH
Mavenインストール
http://maven.apache.org/download.cgi ここからMavenを落とします。3以上であればどれでも大丈夫です。 適当なディレクトリに展開して、こちらもパスの設定を行います。
Windows
set M2_HOME=<展開先ディレクトリ>
set PATH=%M2_HOME%\bin;%PATH%
Mac/Unix(sh系)
export M2_HOME=<展開先ディレクトリ>
export PATH=${M2_HOME}/bin:$PATH
プロジェクトの作成
プロジェクトディレクトリを作成してそこにpom.xml
を置きます。
mkdir spring_sample
cd sprint_sample
vi 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>org.springframework</groupId>
<artifactId>gs-serving-web-content</artifactId>
<version>0.1.0</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.1.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-milestone</id>
<url>https://repo.spring.io/libs-release</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-milestone</id>
<url>https://repo.spring.io/libs-release</url>
</pluginRepository>
</pluginRepositories>
</project>
コントローラの作成
SpringではHTTPリクエストはコントローラが受け付けます。
@Controller
アノテーションを付与すれば簡単に作成できます。 これから作成するGreetingController
では/greeting
にGETリクエストがあった際に、greeting
というビューの名前を返します。
ビューはHTMLを生成する役割を持ちます。
src/main/java/hello/GreetingController.java
package hello;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class GreetingController {
@RequestMapping("/greeting")
public String greeting(@RequestParam(value="name", required=false, defaultValue="World") String name, Model model) {
model.addAttribute("name", name);
return "greeting";
}
}
アノテーション
@RequestMapping
/greeting
へのリクエストとgreeting()
メソッドを紐付ける
@RequestParam
name
パラメタの値をを引数name
にセットするname
パラメタは必須ではない (required=false
)- デフォルト値は
World
(defaultValue="World"
)
実装
Model
オブジェクトに"name"
というキーワードでname
を登録する。
ビューの名前を"greeting"
で返す。
ビューの作成
つづいてビューを作ります。 今回はThymeleafを使ってサーバ側でレンダリングしたHTMLをブラウザへ返します。
vi src/main/resources/templates/greeting.html
<!doctype html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Greeting Started: Serving Web Content</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'Hello, ' + ${name} + '!'" />
</body>
</html>
実行可能にする
WARファイルを生成してTomcat等にデプロイすれば動くのですが、ここでは実行可能なJarファイルを作ってみます。
src/main/java/hello/Application.java
package hello;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.context.annotation.ComponentScan;
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static void main(String...args) {
SpringApplication.run(Application.class, args);
}
}
アノテーション
@ComponentScan
hello
パッケージとその子パッケージを調べ、@Component
アノテーションがついたクラスをSpringに伝える@Controller
がついているGreetingController
が対象@Controller
は@Component
の一種
@EnableAutoConfiguration
- ベースにあわせた振る舞いを行う
web.xml
を使った設定は不要
実行
mvn spring-boot:run
で実行します。ブラウザを開いて http://localhost:8080/greeting にアクセスします。