JavaRush /Java-Blog /Random-DE /Der Frühling ist nicht gruselig, kurz gesagt: Lombok
Павел
Level 11

Der Frühling ist nicht gruselig, kurz gesagt: Lombok

Veröffentlicht in der Gruppe Random-DE
INHALT DES ARTIKELZYKLUS Ein bisschen Wikipedia: Lombok (Lombok aus Indonisch – „Chili-Pfeffer“) ist eine Insel im Malaiischen Archipel, in der Gruppe der Kleinen Sunda-Inseln, Teil Indonesiens. Lombok ist der Name einer beliebten Bibliothek für die Programmiersprache Java. Die Wahl des Namens ist auf die Tatsache zurückzuführen, dass die Insel Lombok nicht so weit von der Insel Java entfernt ist, und offenbar auch auf die Bedeutung ihres Namens „Chili-Pfeffer“, da die Bibliothek nützliche „Würze“ für die bietet Sprache. Besser kann man es nicht sagen, und was nützen die Worte, sehen wir es uns in Aktion an: Installieren Sie das Plugin. Fügen Sie dem <dependencies>-Block der POM-Datei eine Abhängigkeit hinzu:
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>
Los geht's: Öffnen Sie das Projekt aus dem vorherigen Artikel , öffnen Sie die Klasse FruitEntity .
package ru.java.rush.entities;
import org.hibernate.annotations.GenericGenerator;

import javax.persistence.*;

@Entity
@Table(name = "fruit_table")
public class FruitEntity {

    @Id
    @Column(name = "id_fruit")
    @GenericGenerator(name = "generator", strategy = "increment")
    @GeneratedValue(generator = "generator")
    private Integer id;

    @Column(name = "fruit_name")
    private String fruitName;

    @Column(name = "provider_code")
    private Integer providerCode;

//чтобы с классом можно было совершать манипуляции создается
//пустой конструктор, геттеры, сеттеры, конструктор и переопределяется метод toString()

public FruitEntity(){

}


public Integer getId() {
    return id;
}

public FruitEntity setId(Integer id) {
    this.id = id;
    return this;
}

public String getFruitName() {
    return fruitName;
}

public FruitEntity setFruitName(String fruitName) {
    this.fruitName = fruitName;
    return this;
}

public Integer getProviderCode() {
    return providerCode;
}

public FruitEntity setProviderCode(Integer providerCode) {
    this.providerCode = providerCode;
    return this;
}

@Override
public String toString() {
    return "FruitEntity{" +
            "id=" + id +
            ", fruitName='" + fruitName + '\'' +
            ", providerCode=" + providerCode +
            '}';
}
Ein bisschen lang, nicht wahr? Fügen wir der Klasse die @Data-Annotation von Lombok hinzu und sehen wir, wie sie den Code verkürzt.
package ru.java.rush.entities;

import lombok.Data;
import org.hibernate.annotations.GenericGenerator;

import javax.persistence.*;

@Data//Anmerkung сгенирует при компиляции необходимый Code
@Entity
@Table(name = "fruit_table")
public class FruitEntity {

    @Id
    @Column(name = "id_fruit")
    @GenericGenerator(name = "generator", strategy = "increment")
    @GeneratedValue(generator = "generator")
    private Integer id;

    @Column(name = "fruit_name")
    private String fruitName;

    @Column(name = "provider_code")
    private Integer providerCode;

//и все! Весь остальной Code будет сгенирован Ломбоком
Führen Sie das Projekt aus und prüfen Sie, ob alles funktioniert. Sehen wir uns nun an, wie Sie mit Lombok eine Abhängigkeit einfügen können. Öffnen wir als Beispiel die Klasse FruitService , hängen wir @RequiredArgsConstructor an die Klasse an und entfernen wir den Konstruktor aus der Klasse; wir benötigen ihn nicht mehr.
package ru.java.rush.services;

import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import ru.java.rush.entities.FruitEntity;
import ru.java.rush.repositories.FruitRepository;

import java.util.List;


@Service
@RequiredArgsConstructor//Anmerkung от Ломбок
public class FruitService {

    private final FruitRepository fruitRepository;

//здесь когда то был конструктор

    public Optional<FruitEntity> getById(Integer id) {
        return fruitRepository.findById(id);
    }

    public void delById(Integer id) {
        fruitRepository.deleteById(id);
    }

    public Boolean exist(Example<? extends FruitEntity> example) {
        return fruitRepository.exists(example);
    }

    public void save(FruitEntity fruitEntity) {
        fruitRepository.save(fruitEntity);
    }

    public List<FruitEntity> getAll() {
        return fruitRepository.findAll();
    }

    public void saveAll(List<FruitEntity> fruits) {
        fruitRepository.saveAll(fruits);
    }
Verwenden Sie nun dieselbe Methode, um unnötigen Code in der InitiateUtils-Klasse zu entfernen. Überprüfen Sie, ob alles funktioniert. Im Verlauf dieses Projekts verwenden wir mehrere weitere neue Lombok-Anmerkungen. UPD: Guter Kommentar von Denis Ryabchikov „Für eine Entität ist es besser, @Data nicht zu verwenden, sondern es durch @Setter und @Getter zu ersetzen, da @Data auch toString() und hashCode() überschreibt und Probleme damit auftreten können Hash-Code, wenn die Entität Sammlungen und Beziehungen zu anderen Entitäten haben wird.“ Im Prinzip ist das alles, hier ist ein Artikel über Lombok , schauen Sie sich die Beschreibung der Annotationen an: @Data, @Value, @RequiredArgsConstructor und @Builder. Lesen Sie in diesem Artikel über @ Accessors . Der Artikel ist auf Englisch, aber der Seitenübersetzer kann gut damit umgehen, Sie können die Bedeutung verstehen. Im nächsten Artikel werden wir die Datenbank weiter füllen.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION