Heim  >  Artikel  >  Java  >  SpringBoot integriert Lombok und zeigt, wie man häufig auftretende Probleme löst

SpringBoot integriert Lombok und zeigt, wie man häufig auftretende Probleme löst

PHPz
PHPznach vorne
2023-05-20 12:46:232406Durchsuche

Lombok

Durch die Verwendung von Annotationen kann Lombok Java-Code vereinfachen und die Entwicklungseffizienz verbessern. Es handelt sich an sich um eine hervorragende Java-Codebibliothek. Sie nutzt einen opportunistischen syntaktischen Zucker, um die Java-Codierung zu vereinfachen und bietet eine Möglichkeit, Java-Code zu optimieren.

Java-Klassen, die häufig während der Webentwicklung geschrieben werden müssen, benötigen Zeit, um entsprechende Getter/Setter, Konstruktoren, Equals und andere Methoden hinzuzufügen. Wenn viele Attribute vorhanden sind, gibt es eine große Anzahl von Getter/Setter-Methoden, die sehr langwierig sind und nicht viel technischen Inhalt haben. Sobald die Attribute geändert werden, vergisst man leicht, die entsprechenden Methoden zu ändern.

SpringBoot integriert Lombok und zeigt, wie man häufig auftretende Probleme löst

Offizielle Website: Projekt Lombok

1. Allgemeine Anmerkungen zu Lombok

#🎜 🎜#Annotiert für die Klasse; stellt Methoden zum Abrufen und Festlegen aller Attribute der Klasse sowie die Methoden „equals“, „canEqual“, „hashCode“ und „toString“ bereit @Setter# 🎜🎜# @Log4j Annotiert für die Klasse; stellt eine Parameterlose Konstruktormethode für die Klasse bereit @ AllArgsConstructor ist für die Klasse mit Anmerkungen versehen; stellt eine vollständig parametrisierte Konstruktormethode für die Klasse bereit@Cleanup :#🎜 🎜#@Builder
Hinweis Funktion
@Data
Auf der Eigenschaft mit Anmerkungen versehen; stellt Einstellungsmethode für die Eigenschaft bereit Methode für die Eigenschaft abrufen
Annotiert für die Klasse; Versehen Sie die Klasse mit einem log4j-Protokollobjekt mit einem Attribut namens log# 🎜🎜##🎜🎜 # @NoArgsConstructor
Stream schließen
Die annotierte Klasse fügt Konstruktormuster hinzu # ?? zu try/catch, um Ausnahmen abzufangen geworfen werden.
@Value Die Annotation ähnelt @Data. Standardmäßig sind alle Mitgliedsvariablen als private endgültige Änderungen definiert. und die Set-Methode wird nicht generiert

SpringBoot integriert Lombok und zeigt, wie man häufig auftretende Probleme löst

2. Grund für das Scheitern der Lombok-Annotation

Nach der Einführung der Lombok-Abhängigkeit in pom.xml müssen Sie auch installieren Das Lombok-Plug-in#🎜 🎜#, muss IDEA neu gestartet werden, damit es wirksam wird.

Integrationsprozess

1. Lombok-Abhängigkeiten einführen:

Kopieren Sie den folgenden Code und fügen Sie ihn in pom.xml ein, warten Sie, bis das Maven-Repository aktiviert ist Laden Sie die Abhängigkeiten automatisch herunter und installieren Sie sie. Wenn der automatische Paketimport nicht eingestellt ist, klicken Sie auf Manueller Import.

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

SpringBoot integriert Lombok und zeigt, wie man häufig auftretende Probleme löst

SpringBoot integriert Lombok und zeigt, wie man häufig auftretende Probleme löst

2. Installieren Sie das Lombok-Plugin

Klicken Suchen Sie in der IDEA-Datei-》Einstellung-》Plugins-》 nach Lombok, installieren Sie das Plug-in und starten Sie IDEA neu Getter/Setter und andere Methoden für Eigenschaften Programmcode-Beispiel

a wird nicht zum Schreiben von Entitätsklassen verwendet (das Programm ist fett und hässlich)

SpringBoot integriert Lombok und zeigt, wie man häufig auftretende Probleme löst Verwenden Sie die Tastenkombinationen Kommen Sie mit der IDE, um Getter/Setter-Methoden automatisch zu generieren:

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 Einführung in die Lombok-Generierungsmethode (das Programm ist schlank und sieht sehr komfortabel aus)

Sie können es je nach Bedarf manuell hinzufügen. Anmerkungen können auch durch Rechtsklick auf -》Refactor-》Lomok-》

SpringBoot integriert Lombok und zeigt, wie man häufig auftretende Probleme löst

erstellt werden.

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;
}

Vorteile und Nachteile (mögliche Probleme sind Lösungen)#🎜🎜 #

Vorteile:

Lombok kann automatisch Getter/Setter, Equals, toString und andere Methoden für Eigenschaften zur Kompilierungszeit durch Annotationen generieren, Dadurch entfällt die Mühe, diese Codes manuell neu zu erstellen, und der Code der Programmentitätsklasse (Entity/Pojo) sieht schlanker und eleganter aus.

SpringBoot integriert Lombok und zeigt, wie man häufig auftretende Probleme löstNachteile (mögliche Probleme):

Wenn es sich um eine persönliche Entwicklung handelt, können folgende Probleme auftreten:

1. Lombok unterstützt derzeit JDK1.8, aktualisieren Sie das JDK-Version Es kann später fehlschlagen, Lösung:

a. Generieren Sie Getter/Setter-, Equals-, HashCode-, toString- und Konstruktor-Methoden über die IDE-eigene Tastenkombination Alt+Einfügen;

In der neuesten Version von DeLombok können Sie dieses Tool verwenden, um die oben genannten Methoden zu generieren. Klicken Sie mit der rechten Maustaste und wählen Sie Refactored->DeLombok:



oder verwenden Sie einen Befehl:

java -jar lombok.jar delombok src -d src-delomboked

, um die Klassendatei zu konvertieren implementiert durch Lombok-Annotation Für Java-Quelldateien, die Lombok nicht verwenden. SpringBoot integriert Lombok und zeigt, wie man häufig auftretende Probleme löst

Die Verwendung von Lombok kann die JavaBean-Kapselung vereinfachen, beeinträchtigt jedoch die Lesbarkeit. Versuchen Sie außerdem, diese Annotation nicht zu verwenden @AllArgsConstructor Diese Annotation bietet der Außenwelt die Möglichkeit, alle Eigenschaften in der Klasse zu ändern, wenn sie initialisiert wird Objekte in Java-Klassen sollten nicht überarbeitet werden. Wenn eine Java-Klasse mehrere Eigenschaften enthält, fügt Lombok gleichzeitig mehrere Parameterkonstruktoren in die Java-Klasse ein, und die Reihenfolge der Konstruktorparameter wird vollständig von Lombok gesteuert.

3. Nachdem Lombok zum Schreiben von Javabean-Code verwendet wurde, müssen andere Codes, die auf diesem Javabean basieren, Lombok-Abhängigkeiten einführen, und der Grad der Codekopplung erhöht sich. Gleichzeitig müssen Sie auch das Lombok-Plugin in der IDE installieren.

SpringBoot integriert Lombok und zeigt, wie man häufig auftretende Probleme löst4. Wenn es sich um eine gemeinsame Entwicklung handelt, müssen Sie auf die folgenden Punkte achten:

Wenn das Lombok-Plug-in in unseren Programmcode eingeführt wird, müssen auch andere Personen es herunterladen und vorstellen das Lombok-Plugin, sonst funktioniert der Java-Code möglicherweise nicht richtig.

Das obige ist der detaillierte Inhalt vonSpringBoot integriert Lombok und zeigt, wie man häufig auftretende Probleme löst. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen