Spring Frameworkを使ってRestFulなプロジェクトを作ります。
@RestControllerの使い方とかはよく見かけるんだけどプロジェクトの作り方とか探すの大変だったので残します。
環境
Spring Framework 4.3.10.RELEASE
Java 8
jackson 2.9.0
tomcat 9.0
eclipse 4.7 Oxygen
eclipseにSTS(Spring Tool Suite)インストール
ヘルプ→Eclipseマーケットプレイス
「spring sts」で検索し、画像の1番上のやつインストールします。
指示に従ってインストールして、再起動を求められるので再起動します。

Springのプロジェクトを作成
再起動が完了したらパッケージエクスプローラで右クリック→新規→その他
Spring > Spring レガシー・プロジェクトを選択します。

プロジェクト名を入力して「Spring MVC Project」を選択

パッケージ名を入力
ここでは「spring.rest.test」としました。
デフォルトで作成されるプロジェクトは微妙に古いので新し目な感じに変更していきます。
ビルドパスを開いてjdkを1.8に変更します
プロジェクトファセットも以下のように変更します。

pom.xmlも同様にバージョンを更新します。
Springのバージョンについてはデフォルトの3.1.1.RELEASEのままだと@RestController(後述)が使えないので注意です
あとはJSONを扱うためJacksonもここに追加します。
Jackson忘れるとエラーになるので気を付けましょう(Spring RestでNestedServletExceptionが出るときの対処)
<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>spring.rest</groupId>
<artifactId>test</artifactId>
<name>SpringRest</name>
<packaging>war</packaging>
<version>1.0.0-BUILD-SNAPSHOT</version>
<properties>
<java-version>1.8</java-version>
<org.springframework-version>4.3.10.RELEASE</org.springframework-version>
<org.aspectj-version>1.8.10</org.aspectj-version>
<org.slf4j-version>1.7.25</org.slf4j-version>
<jackson-version>2.9.0</jackson-version>
</properties>
<dependencies>
<!-- 省略 -->
<!-- JSON -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson-version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson-version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson-version}</version>
</dependency>
<!-- 省略 -->
</project>
@RestControllerを使ってクラス作成
次はRestなクラスを作ります。
JSONで受けてJSONで返します。
デフォルトで作成されているHomeController.javaはいらないので消しましょう。
jspも不要です(\SpringRest\src\main\webapp\WEB-INF\views\home.jsp)
以下のようにクラスにアノテーションを付与することで簡単にRestなクラスができるのは大変便利です。
ついでにメソッドも追加します。今回はブラウザから簡単に確認できるようにGETメソッドを使用します。
@RequestMappingのvalueはURLのパス、methodはHTTPメソッドです。
RestTest.java
package spring.rest.test;
import java.util.HashMap;
import java.util.Map;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class RestTest {
@RequestMapping(value="/rest_get", method = RequestMethod.GET)
public Map<String, Object> restGetMethod() {
Map<String, Object> map = new HashMap<>();
map.put("json", "だよ");
return map;
}
}
あとはTomcat等で起動させてブラウザでアクセスするだけです。

余談
http://localhost:8080/のうしろの「/test/」を変更したい場合は
プロジェクトを右クリック→プロパティ→Webプロジェクトの設定
コンテキストルートを/test/から例えば/rest/にするとURLを変更することができます。
変更するとhttp://localhost:8080/rest/rest_getでアクセス可能になります。
※サーバをクリーンしないと反映されないので注意
続きみたいな記事
Spring Rest + HTMLでWebアプリケーション構築
こちらはWebアプリの作り方です。
HTML+JSとJSONの組み合わせで構築していきます。


コメント