はじめに
前回、SpringBootの始め方で簡単なAPI作成ができるようにしました。今回は前回の記事にlombokを導入してボイラーコードを減らせるようにしつつJSONでPOSTされた結果をもとにレスポンスを返すようにしてみようと思います。
Lombokの導入
Lombokってなに?
Lombokは Javaにおけるボイラープレートコードをソースコードから排除するために使用するライブラリです。
例えばgetter
やsetter
をJavaでは書くことが多いのですがこれらのコードを書かなくても良くすることで本質的に必要ではないコードを減らすことができます。
build.gradleの設定
前回作成したbuild.gradle
にorg.projectlombok:lombok
を追加します。
plugins {
id 'org.springframework.boot' version '2.5.5'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
// Lombokを使用するために追加
compileOnly 'org.projectlombok:lombok'
}
test {
useJUnitPlatform()
}
準備といえばこれくらいでlombokは簡単に導入できます。
eclipseになんかlombok用の設定が必要だった気もしているのですが…(コンパイルはできるけど入力補助してもらえないと思います)
既にその設定が入ってしまっているので、自分の環境では再現できませんのでうまくいかなかったときにはその視点で見てみていただければと思います。
JSONの内容をそのまま返すようなエントリーポイント作成
リクエストの作成
package com.example.demo.app.request;
import lombok.Data;
@Data
public class TestRequest {
private String test;
}
レスポンスの作成
package com.example.demo.response;
import lombok.Data;
@Data
public class TestResponse {
private String test;
}
エントリーポイントの作成
前回作ったコントローラーにtest2
を追加します。
package com.example.demo.app.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.example.demo.app.request.TestRequest;
import com.example.demo.response.TestResponse;
@RestController
public class TestController {
@GetMapping("/test")
public String test() {
return "Hello World";
}
@PostMapping("/test2")
public TestResponse test2(@RequestBody TestRequest request) {
var response = new TestResponse();
response.setTest(request.getTest());
return response;
}
}
見ると分かるのですがTestRequest
やTestResponse
にはgetter
やsetter
を記載してませんが、@Data
のアノテーションがついているためgetTest
やsetTest
が使えます。(@Data
はほかにもいろんなコードが追加されますがここでは省略)
動作確認
JSONをリクエストしてみると下記の通りそのままJSONを返却してくれるようになってます。
おわりに
lombokを使うのは長くJavaをやってきた人にとって抵抗がある人もいるんじゃないかと思いますが、実際に使ってみると便利なことも多いなと思いますし、今回紹介したものだけでなくいろんなコードの省略が可能なのでぜひ使ってみていただければと思います。