JavaRush /Java Blog /Random-IT /La primavera non fa paura, insomma: Lombok
Павел
Livello 11

La primavera non fa paura, insomma: Lombok

Pubblicato nel gruppo Random-IT
CONTENUTI DEL CICLO DI ARTICOLI Un po' di Wikipedia: Lombok (Lombok dall'indonesiano - “peperoncino”) è un'isola dell'Arcipelago Malese, nel gruppo delle Piccole Isole della Sonda, parte dell'Indonesia. Lombok è il nome dato a una popolare libreria per il linguaggio di programmazione Java. La scelta del nome è dovuta al fatto che l'isola di Lombok non è poi così lontana dall'isola di Giava, e anche, a quanto pare, al significato del suo nome "peperoncino", poiché la biblioteca fornisce un utile "condimento" per il lingua. Non puoi dirlo meglio, e a cosa servono le parole, vediamolo in azione: installa il plugin. Aggiungi una dipendenza al blocco <dependencies> del file pom:
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>
Eccoci qui: apri il progetto dell'articolo precedente , apri la classe 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 +
            '}';
}
Un po' lungo, non è vero? Aggiungiamo l'annotazione @Data da Lombok alla classe e vediamo come accorcia il codice.
package ru.java.rush.entities;

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

import javax.persistence.*;

@Data//annotation сгенирует при компиляции необходимый 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 будет сгенирован Ломбоком
Esegui il progetto, controlla che tutto funzioni. Ora vediamo come puoi iniettare una dipendenza usando Lombok. Apriamo come esempio la classe FruitService , colleghiamo @RequiredArgsConstructor alla classe e rimuoviamo il costruttore dalla classe; non ne abbiamo più bisogno.
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//annotation от Ломбок
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);
    }
Ora usa lo stesso metodo per eliminare il codice non necessario nella classe InitiateUtils. Controlla che tutto funzioni. Man mano che questo progetto avanza, stiamo utilizzando molte altre nuove annotazioni di Lombok. UPD: buon commento da Denis Ryabchikov "Per un'entità, è meglio non utilizzare @Data, ma sostituirlo con @Setter e @Getter, perché anche @Data sovrascrive toString() e hashCode() e potrebbero sorgere problemi con codice hash se l'entità avrà raccolte e relazioni con altre entità." In linea di principio, questo è tutto, ecco un articolo su Lombok , guarda la descrizione delle annotazioni: @Data, @Value, @RequiredArgsConstructor e @Builder. In questo articolo, leggi di @Accessors , l'articolo è in inglese, ma il traduttore della pagina riesce a gestirlo bene, puoi capirne il significato. Nel prossimo articolo continueremo a riempire il database.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION