以下の記事に解決方法が載っていました。
目次
遭遇した事象
Spring Initializrからダウンロードした時点でLombokは依存関係に追加されています。
plugins {
id 'java'
id 'org.springframework.boot' version '3.0.4'
id 'io.spring.dependency-management' version '1.1.0'
}
group = 'com.t0k0sh1'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.projectlombok:lombok:1.18.22'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
IntelliJ IDEAでLombokを使用可能にするためには、設定のビルド、実行、デプロイ>コンパイラー>アノテーションプロセッサーで、「アノテーション処理を有効にする」にチェックをつけ、「プロジェクトクラスパスからプロセッサーを取得する」にチェックがついている状態にします。
ここまでがよく知られているLombokの導入方法になります。
lombok.Data
アノテーションを定義したクラスを作成し、
package com.t0k0sh1.tutorial.entity;
import lombok.Data;
@Data
public class User {
private Long id;
private String name;
private String email;
private String password;
}
自動生成されているであろうgetter
を使ってみます。
package com.t0k0sh1.tutorial.controller;
import com.t0k0sh1.tutorial.entity.User;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
@RestController
public class UserController {
private final List<User> users = new ArrayList<>();
@GetMapping("/users/{id}")
public User getUser(@PathVariable Long id) {
return users.stream().filter(a -> a.getId().equals(id)).findFirst().orElse(null);
}
}
すると、getter
が見つからずにコンパイルエラーとなります。
/Users/t0k0sh1/Workspace/tutorial/src/main/java/com/t0k0sh1/tutorial/controller/UserController.java:15: エラー: シンボルを見つけられません
return users.stream().filter(a -> a.getId().equals(id)).findFirst().orElse(null);
^
シンボル: メソッド getId()
場所: タイプUserの変数 a
対処方法
build.gradleを以下のように書き換えることで問題を解消することができます。
plugins {
id 'java'
id 'org.springframework.boot' version '3.0.4'
id 'io.spring.dependency-management' version '1.1.0'
}
group = 'com.t0k0sh1'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.projectlombok:lombok:1.18.22'
implementation 'org.modelmapper:modelmapper:3.1.1'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
// 以下の1行を追加する
annotationProcessor 'org.projectlombok:lombok:1.18.22'
}
tasks.named('test') {
useJUnitPlatform()
}
追加でannotationProcessor 'org.projectlombok:lombok:1.18.22'
を追記します。(バージョン部分は元の記述に合わせてください)
Gradleプロジェクトの再ロード(右端のGradleタブを開いて更新ボタンをクリックする)し、プロジェクトのビルドを行なってください。
すると、先ほどまでエラーとなっていましたが、今度はビルドに成功します。