STSでLombok の威力を試してみました
STS で Lombok の威力を試してみました。
先日Javaのボイラープレートコードを極力少なくしましょう!でLombokを使用する準備が整いました。
これで完了?
プロジェクトにもLombokを
先日の準備は「STSツールにLombokの構文を理解させる」という意味での準備でした。
この作業をやらないでいきなりプロジェクト作成しLombokを使おうとしてもSTS的に理解できず
コード補完機能が働きません。そればかりか実装中に構文エラーが発生して実装どころではなくなるのです。
ということで、Lombok確認用にプロジェクトを用意しましょう。
これから先、mavenというパッケージ管理を使用します。会社で試される方はmavenのプロキシ設定をしておきましょう。
こちらの投稿が参考になると思います。
STSを起動して左ペインのパッケージ・エクスプローラーの中から
「新しいSpringスターター・プロジェクトを作成する」をクリック
作成ウィザードが表示されます。
この画面の設定はそのままとします。「次へ」をクリック。
この画面で開発ツールの項目を展開し、「Lombok」にチェックを入れます。
そして完了ボタンをクリックします。
あっという間にプロジェクトが完成します。
この後ひたすら必要なパッケージがmavenによりダウンロードされます。
結構長いです。
ちなみに、ダウンロードされたパッケージはどのフォルダに保存されているかというと・・・
c:\users\%username%\.m2\repository
になります。
ここにどんどんたまっていくのでこのフォルダは肥大化していきます。
削除してもまたSTSを開始したときに自動で取得しに行くので問題ありません。
困ったときや容量がひっ迫してきた際は削除してみましょう。
STSの下ペインの進行状況ウィンドウ(表示されていない場合はウィンドウ→ビューの表示から選択)で
「表示する操作はありません。」と表示されたらプロジェクトの準備完了です!
実装
さっそくcom.example.demoパッケージ配下に適当にクラスを作ってLombokのアノテーションを実装してみましょう。
【Java】Lombokを使ってボイラープレートコード排除を参考にさせていただきました。
package com.example.demo;
import lombok.Data;
// これが「アクセサを自動生成する」というアノテーション
@Data
public class HogeLombok {
private String fugaValue;
// 通常だとここにアクセサを実装しますがLombokを使用するので不要!
// public String getFugaValue() {
// return fugaValue;
// }
// public void setFugaValue(String fugaValue) {
// this.fugaValue = fugaValue;
// }
}
そしてDemoApplication.java(プロジェクトが自動生成された際に生成されたクラス)で使用します。
ちゃんとコード補完が効いていますね!先日のLombok適用の効果です。
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
var v = new HogeLombok();
v.setFugaValue("FugaValueに値が設定されたこと");
var tmp = v.getFugaValue();
System.out.println(String.format("hey!値は「%s」だ", tmp));
}
}
実行してみよう!
実行ボタンをクリック。すると初回は以下のようなウィンドウが表示されます。
Spring Bootアプリケーションを選択してOKをクリックしましょう。
また以下のような警告が表示されるかもしれません。
「アクセスを許可する」をクリックしておきます。
Ansiコンソールの警告は「今後このメッセージを表示しない」としておきます。
大成功ですね!
ほかにもいろいろなアノテーションがあるようです。
また試してみます!
ディスカッション
コメント一覧
まだ、コメントがありません