今回は、STSを利用して、lombokを利用してみたので、その手順を共有する。STS上でlombokを利用できるようにするには、あらかじめSTS上にlombokをインストールしておく必要がある。
前提条件
下記記事の手順に従って、STSによるSpring Bootプロジェクトを作成済であること
lombokのインストール
STSにlombokをインストールする。その手順は以下の通り。
1) STS(Spring Tool Suite)が起動している場合は終了する
2) lombok-(バージョン).jarファイルを探し、ダブルクリック
下図のように、「C:\Users\(ユーザー名)\.gradle\caches\modules-(X)\files-(X.X)」下にGradleでダウンロードされたファイルが配置されているので、そこから「lombok-(バージョン).jar」を探す
4) 「Specify location …」ボタンを押下し、STSの起動exe(SpringToolSuite4.exe)を選択
5) 「IDEs」に先ほど設定したexeファイルが選択されていることを確認後、「Install / Update」ボタンを押下
6) インストールが完了すると、下記ダイアログが表示されるので、「Quit Installer」を押下
7) 「SpringToolSuite4.ini」の最終行に「-javaagent:C:\work\sts\sts-4.5.1.RELEASE\lombok.jar」が追記されていることを確認
サンプルプログラムの内容
今回作成したlombokを利用したサンプルプログラムの構成は以下の通り。
なお、上記の赤枠のうち、前提条件のプログラムと比較して、「DemoForm.java」は今回新規で作成したプログラムで、他は変更したプログラムとなる。
build.gradleの内容は以下の通りで、lombokの設定を追加している。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | plugins { id 'org.springframework.boot' version '2.2.4.RELEASE' id 'io.spring.dependency-management' version '1.0.9.RELEASE' id 'java' } group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '13' repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation('org.springframework.boot:spring-boot-starter-test') { exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } //lombokの設定 compileOnly 'org.projectlombok:lombok:1.18.10' annotationProcessor 'org.projectlombok:lombok:1.18.10' } test { useJUnitPlatform() } |
なお、STSの場合は、build.gradleの修正内容を反映するには、以下のように、プロジェクトを選択し右クリックし、「Gradle」メニューから「Gradleプロジェクトのリフレッシュ」を選択する。
Formオブジェクトの内容は以下の通り。lombokのアノテーション「@Data」をクラスに付与した上で、テスト用文字列「testStr」を定義している。「@Data」が付与されているため、「testStr」のGetter/Setterメソッドが利用できるようになっている。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | package com.example.demo; import lombok.Data; /** * Formオブジェクトのクラス */ @Data public class DemoForm { /** テスト用文字列 */ private String testStr; } |
次に、コントローラクラスの内容は以下の通り。DemoFormのテスト用文字列「testStr」に値を設定した後で、それを画面表示用のModelオブジェクトに設定している。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | package com.example.demo; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class DemoController { @RequestMapping("/") public String index(Model model) { DemoForm demoForm = new DemoForm(); demoForm.setTestStr("テスト用文字列を設定しました"); model.addAttribute("testStr", demoForm.getTestStr()); return "index"; } } |
さらに、HTMLファイルの内容は以下の通り。Modelオブジェクトの値を画面上で表示している。
1 2 3 4 5 6 7 8 9 10 11 | <!DOCTYPE html> <html lang="ja" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>index page</title> </head> <body> 設定された文字列: <p th:text="${testStr}">ここにFormオブジェクトに設定した文字列が設定されます</p> </body> </html> |
STSを起動し、Webブラウザ上で「http://(サーバー名):(ポート番号)/」とアクセスすると、下記画面が表示され、DemoFormのテスト用文字列「testStr」に設定した値が表示されることが確認できる。
要点まとめ
- STS上でlombokを利用するには、あらかじめSTS上にlombokをインストールしておく必要がある。