14
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SpringBootのプロジェクトにlombok導入する

Posted at

はじめに

前回、SpringBootの始め方で簡単なAPI作成ができるようにしました。今回は前回の記事にlombokを導入してボイラーコードを減らせるようにしつつJSONでPOSTされた結果をもとにレスポンスを返すようにしてみようと思います。

Lombokの導入

Lombokってなに?

Lombokは Javaにおけるボイラープレートコードをソースコードから排除するために使用するライブラリです。
例えばgettersetterをJavaでは書くことが多いのですがこれらのコードを書かなくても良くすることで本質的に必要ではないコードを減らすことができます。

build.gradleの設定

前回作成したbuild.gradleorg.projectlombok:lombokを追加します。

build.gradle
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の内容をそのまま返すようなエントリーポイント作成

リクエストの作成

TestRequest.java
package com.example.demo.app.request;

import lombok.Data;

@Data
public class TestRequest {
	private String test;
}

レスポンスの作成

TestResponse.java
package com.example.demo.response;

import lombok.Data;

@Data
public class TestResponse {
	private String test;
}

エントリーポイントの作成

前回作ったコントローラーにtest2を追加します。

TestController.java
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;
	}
}

見ると分かるのですがTestRequestTestResponseにはgettersetterを記載してませんが、@DataのアノテーションがついているためgetTestsetTestが使えます。(@Dataはほかにもいろんなコードが追加されますがここでは省略)

動作確認

JSONをリクエストしてみると下記の通りそのままJSONを返却してくれるようになってます。
image.png

おわりに

lombokを使うのは長くJavaをやってきた人にとって抵抗がある人もいるんじゃないかと思いますが、実際に使ってみると便利なことも多いなと思いますし、今回紹介したものだけでなくいろんなコードの省略が可能なのでぜひ使ってみていただければと思います。

14
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?