Java PR

【SpringBoot】アクセサの自動生成

記事内に商品プロモーションを含む場合があります

オブジェクト指向プログラミングでは、基本的にクラス変数は隠蔽(private)し、アクセス用のメソッドを経由して参照するのが一般的かと思います。

以下のようにアクセサ関数をいちいち定義するのってちょっと面倒ではないでしょうか?

public class Sample {
  private int hoge;
  private String fuga;

  public void setHoge(int param) {
    hoge = param;
  }

  public int getHoge() {
    return hoge;
  }

  public void setFuga(String param) {
    fuga = param;
  }

  public String getFuga() {
    return fuga;
  }
}

これらを自動生成する方法を紹介します。

Lombok

アクセサ関数を自動生成するには、「Lombok」が便利です。
特定のアノテーションを付けることによって、ゲッター/セッターメソッドを自動定義します。

Lombokパッケージの取得はこちら

実装例

@Data
public class Sample {
  private int hoge;
  private String fuga;
}

だいぶスッキリしますね。
『 @Data 』アノテーションを付与することにより、ゲッター/セッターメソッドが自動定義されます。

形式

set/get + 変数名の先頭を大文字にしたメソッド名となります。
ただし、変数がboolean型の場合は少し異なりますので注意してください。

例

@Data
public class Sample {
  private int hoge;
  private String fuga;
  private boolean flag;

  // ↓自動生成されるメソッド↓
  public void setHoge(int hoge) {
    this.hoge = hoge;
  }
  public int getHoge(void) {
    return hoge;
  }

  public void setFuga(String fuga) {
    this.fuga = fuga;
  }
  public int getFuga(void) {
    return fuga;
  }

  public void setFlag(boolean flag) {
    this.flag = flag;
  }
  public boolean isFlag(void) {
    return flag;
  }
  // ↑自動生成されるメソッド↑
}

導入方法

プロジェクトの設定ファイルに、Lombokの参照を追加します。

Maven

pom.xml

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>X.X.X</version>
    <scope>provided</scope>
</dependency>

gradle

build.gradle

dependencies {
  compileOnly 'org.projectlombok:lombok:X.X.X'
}

『 X.X.X 』には、lombokライブラリのバージョンを記述してください。