目次
Lombok
2. Lombok アノテーションが失敗する理由
統合プロセス
1. Lombok 依存関係の導入:
2. Lombok プラグインをインストールします
ホームページ Java &#&チュートリアル SpringBoot による Lombok の統合と一般的な問題の解決方法

SpringBoot による Lombok の統合と一般的な問題の解決方法

May 20, 2023 pm 12:46 PM
springboot lombok

Lombok

アノテーションを使用すると、Lombok は Java コードを簡素化し、開発効率を向上させることができます。 Lombok はそれ自体が優れた Java コード ライブラリであり、便宜的な構文シュガーを使用して Java コーディングを簡素化し、Java コードを合理化する方法を提供します。ただし、Lombok は標準の Java ライブラリではありません。

Web 開発のプロセスでは、頻繁に Java クラスを記述する必要があり、対応するゲッター/セッター、コンストラクター、equals およびその他のメソッドを追加するのに時間がかかります。属性が多い場合、getter/setter メソッドも多数存在しますが、それらは非常に長く、技術的な内容も多くないため、属性を変更すると、対応するメソッドの変更を忘れがちです。

SpringBoot による Lombok の統合と一般的な問題の解決方法

#公式 Web サイト: Project Lombok

1. Lombok でよく使用される注釈

注釈Function@Data はクラスに注釈が付けられており、クラスのすべての属性の取得および設定メソッドを提供します。また、equals、canEqual、hashCode、toString メソッドも提供します。@Setter はプロパティに注釈が付けられ、プロパティの設定メソッドを提供します##@Setter @Log4j#@NoArgsConstructor はクラスに注釈が付けられており、クラス ## にパラメータなしのコンストラクターを提供します。 クラスにアノテーションが付けられ、クラスに完全にパラメータ化されたコンストラクター メソッドを提供します#@Cleanup:ストリームを閉じる@Builderアノテーション付きクラスはコンストラクター モードを追加します@Synchronized同期ロック@SneakyThrows例外をキャッチする try/catch と同様の例外をキャッチします@NonNullAddパラメータへのこのアノテーション。パラメータが null の場合、null ポインタ例外がスローされます。@Value アノテーションは @Data に似ています。デフォルトでは、すべてのメンバー変数はプライベートな最終変更として定義され、set メソッドは生成されません。

SpringBoot による Lombok の統合と一般的な問題の解決方法

2. Lombok アノテーションが失敗する理由

pom.xml に Lombok 依存関係を導入した後、Lombok プラグインをインストールする必要もあります ,restart IDEA が有効になります。

統合プロセス

1. Lombok 依存関係の導入:

次のコードをコピーして pom.xml に挿入し、Maven ウェアハウスが依存関係を自動的にダウンロードしてインストールするまで待ちます。 、自動パッケージインポートがない場合は、「手動でインポート」をクリックします。

<!--导入lombok小辣椒驱动依赖,用来生成get/set等方法依赖-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <!--<optional>true</optional>-->
            <version>1.18.12</version>
            <scope>provided</scope><!--自动生成有参无参构造-->
        </dependency>
ログイン後にコピー

SpringBoot による Lombok の統合と一般的な問題の解決方法

SpringBoot による Lombok の統合と一般的な問題の解決方法

2. Lombok プラグインをインストールします

[ファイル]->>[設定]->>[プラグイン]->>[検索]をクリックします。 IDEA 内 Lombok がプラグインをインストールした後、IDEA を再起動します;

SpringBoot による Lombok の統合と一般的な問題の解決方法

3. Lombok を使用して、プロパティのゲッター/セッターおよびその他のメソッド プログラム コード例を生成します

a. Lombok Entity クラスを使用して書かれていない (プログラムは太くて醜い)

IDE に付属のショートカット キーを使用して、ゲッター/セッター メソッドを自動的に生成します:

SpringBoot による Lombok の統合と一般的な問題の解決方法# #

package com.dvms.entity;

/*
 *文件名: Anglerecord
 *创建者: CJW
 *创建时间:2020/6/6 14:40
 *描述: 记录
 */
public class Record {

    private String time;
    private String device;
    private String state;

    public Record(String time, String device, String state) {
        this.time = time;
        this.device = device;
        this.state = state;
    }

    public Record() {
    }

    public String getTime() {
        return this.time;
    }

    public String getDevice() {
        return this.device;
    }

    public String getState() {
        return this.state;
    }

    public Record setTime(String time) {
        this.time = time;
        return this;
    }

    public Record setDevice(String device) {
        this.device = device;
        return this;
    }

    public Record setState(String state) {
        this.state = state;
        return this;
    }

    public boolean equals(final Object o) {
        if (o == this) return true;
        if (!(o instanceof Record)) return false;
        final Record other = (Record) o;
        if (!other.canEqual((Object) this)) return false;
        final Object this$time = this.getTime();
        final Object other$time = other.getTime();
        if (this$time == null ? other$time != null : !this$time.equals(other$time)) return false;
        final Object this$device = this.getDevice();
        final Object other$device = other.getDevice();
        if (this$device == null ? other$device != null : !this$device.equals(other$device)) return false;
        final Object this$state = this.getState();
        final Object other$state = other.getState();
        if (this$state == null ? other$state != null : !this$state.equals(other$state)) return false;
        return true;
    }

    protected boolean canEqual(final Object other) {
        return other instanceof Record;
    }

    public int hashCode() {
        final int PRIME = 59;
        int result = 1;
        final Object $time = this.getTime();
        result = result * PRIME + ($time == null ? 43 : $time.hashCode());
        final Object $device = this.getDevice();
        result = result * PRIME + ($device == null ? 43 : $device.hashCode());
        final Object $state = this.getState();
        result = result * PRIME + ($state == null ? 43 : $state.hashCode());
        return result;
    }

    public String toString() {
        return "Record(time=" + this.getTime() + ", device=" + this.getDevice() + ", state=" + this.getState() + ")";
    }
}
ログイン後にコピー

b. はじめに Lombok 生成方法 (プログラムはスリムで非常に快適に見えます)

必要に応じて手動でアノテーションを追加するか、右クリック->>リファクタリング->>Lomok-を実行できます。 》

SpringBoot による Lombok の統合と一般的な問題の解決方法

package com.dvms.entity;

/*
 *文件名: Anglerecord
 *创建者: CJW
 *创建时间:2020/6/6 14:40
 *描述: 记录
 */

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;

@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true) //链式调用
public class Record {

    private String time;
    private String device;
    private String state;
}
ログイン後にコピー

利点と欠点 (考えられる問題は解決策です)

利点:

Lombok は getter/setter、equals、toString などを自動的に生成できます。アノテーションを使用してコンパイル時にプロパティのメソッドを作成できるため、これらのコードを手動で再構築する手間がなくなり、プログラム エンティティ クラス (entity/pojo) コードがより「スリム」でスタイリッシュに見えます。

欠点 (考えられる問題):

個人開発の場合、次の問題が発生する可能性があります:

1.Lombok は現在 JDK1.8 をサポートしていますが、JDK をアップグレードすると無効になる可能性があります。解決方法:

a. IDE に付属の Alt Insert ショートカット キーを使用して、getter/setter、equals、hashCode、toString、およびコンストラクター メソッドを生成します。

SpringBoot による Lombok の統合と一般的な問題の解決方法

最新バージョンでは、DeLombok を使用してこのツールを使用してこれらのメソッドを生成できます。右クリックして「リファクタリング」>「DeLombok:

SpringBoot による Lombok の統合と一般的な問題の解決方法

」を選択するか、コマンドを使用します:

java -jar lombok.jar delombok src -d src-delomboked
ログイン後にコピー
Lombok アノテーションによって実装されたクラス ファイルを Java ソースに変換します。ロンボク文書を使用しないもの。

Lombok を使用すると JavaBean のカプセル化を簡素化できますが、可読性に影響します。さらに、このアノテーション @AllArgsConstructor は使用しないようにしてください。このアノテーションは、オブジェクトの初期化時にクラス内のすべてのプロパティを変更する機会を外部に与える巨大なコンストラクターを提供します。これは非常に安全ではありません。 Java クラス内のオブジェクトは Revise しないでください。同時に、Java クラスに複数のプロパティがある場合、Lombok は複数のパラメーター コンストラクターを Java クラスに挿入し、コンストラクター パラメーターの順序は Lombok によって完全に制御されます。

3. Lombok を使用して Javabean コードを作成した後、この Javabean に依存する他のコードは Lombok 依存関係を導入する必要があり、コード結合度が増加します。同時に、Lombok プラグインを IDE にインストールする必要もあります。

4. 共同開発の場合は、次の問題に注意する必要があります:

Lombok プラグインをプログラム コードに導入する場合、他の人も Lombok プラグインをダウンロードして導入する必要があります。 -in にしないと、Java コードが正しく実行されない可能性があります。

属性に注釈を付けます。属性の取得メソッドを提供します。
クラスに注釈を付けます。クラス log4j ログ オブジェクトの log という名前の属性
##@ AllArgsConstructor

以上がSpringBoot による Lombok の統合と一般的な問題の解決方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Springboot が Jasypt を統合して構成ファイルの暗号化を実装する方法 Springboot が Jasypt を統合して構成ファイルの暗号化を実装する方法 Jun 01, 2023 am 08:55 AM

Jasypt の概要 Jasypt は、開発者が最小限の労力で基本的な暗号化機能を自分のプロジェクトに追加できる Java ライブラリであり、暗号化の仕組みを深く理解する必要はありません。一方向および双方向暗号化の高いセキュリティ。標準ベースの暗号化テクノロジー。パスワード、テキスト、数値、バイナリを暗号化します... Spring ベースのアプリケーション、オープン API への統合、JCE プロバイダーでの使用に適しています... 次の依存関係を追加します: com.github.ulisesbocchiojasypt-spring-boot-starter2. 1.1 Jasypt の特典はシステムのセキュリティを保護し、コードが漏洩した場合でもデータ ソースは保証されます。

プロによるガイダンス: Eclipse Lombok プラグインを正常にインストールする方法に関する専門家のアドバイスと手順 プロによるガイダンス: Eclipse Lombok プラグインを正常にインストールする方法に関する専門家のアドバイスと手順 Jan 28, 2024 am 09:15 AM

専門的なガイダンス: Lombok プラグインを Eclipse にインストールするための専門家のアドバイスと手順。特定のコード例が必要です。 概要: Lombok は、アノテーションを通じて Java コードの作成を簡素化し、いくつかの強力なツールを提供する Java ライブラリです。この記事では、Eclipse で Lombok プラグインをインストールして構成する方法の手順を読者に紹介し、読者が Lombok プラグインをよりよく理解して使用できるように、いくつかの具体的なコード例を示します。まず Lombok プラグインをダウンロードします。

SpringBoot が Redisson を統合して遅延キューを実装する方法 SpringBoot が Redisson を統合して遅延キューを実装する方法 May 30, 2023 pm 02:40 PM

使用シナリオ 1. 注文は正常に行われましたが、支払いが 30 分以内に行われませんでした。支払いがタイムアウトになり、注文が自動的にキャンセルされました 2. 注文に署名があり、署名後 7 日間評価が行われませんでした。注文がタイムアウトして評価されない場合、システムはデフォルトでプラスの評価を設定します 3. 注文は正常に行われます。販売者が 5 分間注文を受け取らない場合、注文はキャンセルされます。 4. 配送がタイムアウトします。 SMS リマインダーをプッシュします... 遅延が長く、リアルタイム パフォーマンスが低いシナリオでは、タスク スケジュールを使用して定期的なポーリング処理を実行できます。例: xxl-job 今日は選択します

Redis を使用して SpringBoot に分散ロックを実装する方法 Redis を使用して SpringBoot に分散ロックを実装する方法 Jun 03, 2023 am 08:16 AM

1. Redis は分散ロックの原則を実装しており、分散ロックが必要な理由 分散ロックについて話す前に、分散ロックが必要な理由を説明する必要があります。分散ロックの反対はスタンドアロン ロックです。マルチスレッド プログラムを作成するとき、共有変数を同時に操作することによって引き起こされるデータの問題を回避します。通常、ロックを使用して共有変数を相互に除外し、データの正確性を確保します。共有変数の使用範囲は同じプロセス内です。共有リソースを同時に操作する必要があるプロセスが複数ある場合、どうすれば相互排他的になるのでしょうか?今日のビジネス アプリケーションは通常マイクロサービス アーキテクチャであり、これは 1 つのアプリケーションが複数のプロセスをデプロイすることも意味します。複数のプロセスが MySQL の同じレコード行を変更する必要がある場合、順序の乱れた操作によって引き起こされるダーティ データを避けるために、分散が必要です。今回導入するスタイルはロックされています。ポイントを獲得したい

Springbootがjarパッケージにファイルを読み込んだ後にファイルにアクセスできない問題を解決する方法 Springbootがjarパッケージにファイルを読み込んだ後にファイルにアクセスできない問題を解決する方法 Jun 03, 2023 pm 04:38 PM

Springboot はファイルを読み取りますが、jar パッケージにパッケージ化した後、最新の開発にアクセスできません。jar パッケージにパッケージ化した後、Springboot がファイルを読み取れない状況があります。その理由は、パッケージ化後、ファイルの仮想パスが変更されるためです。は無効であり、ストリーム経由でのみアクセスできます。読み取ります。ファイルはリソースの下にあります publicvoidtest(){Listnames=newArrayList();InputStreamReaderread=null;try{ClassPathResourceresource=newClassPathResource("name.txt");Input

SpringBootとSpringMVCの比較と差異分析 SpringBootとSpringMVCの比較と差異分析 Dec 29, 2023 am 11:02 AM

SpringBoot と SpringMVC はどちらも Java 開発で一般的に使用されるフレームワークですが、それらの間には明らかな違いがいくつかあります。この記事では、これら 2 つのフレームワークの機能と使用法を調べ、その違いを比較します。まず、SpringBoot について学びましょう。 SpringBoot は、Spring フレームワークに基づいたアプリケーションの作成と展開を簡素化するために、Pivo​​tal チームによって開発されました。スタンドアロンの実行可能ファイルを構築するための高速かつ軽量な方法を提供します。

SQL ステートメントを使用せずに Springboot+Mybatis-plus を実装して複数のテーブルを追加する方法 SQL ステートメントを使用せずに Springboot+Mybatis-plus を実装して複数のテーブルを追加する方法 Jun 02, 2023 am 11:07 AM

Springboot+Mybatis-plus が SQL ステートメントを使用して複数テーブルの追加操作を実行しない場合、私が遭遇した問題は、テスト環境で思考をシミュレートすることによって分解されます: パラメーターを含む BrandDTO オブジェクトを作成し、パラメーターをバックグラウンドに渡すことをシミュレートします。 Mybatis-plus で複数テーブルの操作を実行するのは非常に難しいことを理解してください。Mybatis-plus-join などのツールを使用しない場合は、対応する Mapper.xml ファイルを設定し、臭くて長い ResultMap を設定するだけです。対応する SQL ステートメントを記述します。この方法は面倒に見えますが、柔軟性が高く、次のことが可能です。

SpringBoot が Redis をカスタマイズしてキャッシュのシリアル化を実装する方法 SpringBoot が Redis をカスタマイズしてキャッシュのシリアル化を実装する方法 Jun 03, 2023 am 11:32 AM

1. RedisAPI のデフォルトのシリアル化メカニズムである RedisTemplate1.1 をカスタマイズします。API ベースの Redis キャッシュ実装では、データ キャッシュ操作に RedisTemplate テンプレートを使用します。ここで、RedisTemplate クラスを開いて、クラスのソース コード情報を表示します。publicclassRedisTemplateextendsRedisAccessorimplementsRedisOperations、BeanClassLoaderAware{//キーを宣言、値の各種シリアル化メソッド、初期値は空 @NullableprivateRedisSe

See all articles