Rumah  >  Artikel  >  Java  >  SpringBoot menyepadukan Lombok dan cara menyelesaikan masalah biasa

SpringBoot menyepadukan Lombok dan cara menyelesaikan masalah biasa

PHPz
PHPzke hadapan
2023-05-20 12:46:232338semak imbas

Lombok

Menggunakan anotasi membolehkan Lombok memudahkan kod Java dan meningkatkan kecekapan pembangunan. Ia sendiri adalah perpustakaan kod Java yang sangat baik Ia menggunakan gula sintaksis oportunistik untuk memudahkan pengekodan Java dan menyediakan cara untuk menyelaraskan kod Java.

Untuk kelas Java yang selalunya perlu ditulis semasa pembangunan web, ia mengambil masa untuk menambah getter/setter, constructor, equals dan kaedah lain yang sepadan. Apabila terdapat banyak atribut, akan terdapat sejumlah besar kaedah getter/setter, yang sangat panjang dan tidak mempunyai banyak kandungan teknikal Setelah atribut diubah suai, mudah untuk melupakan untuk mengubah suai kaedah yang sepadan.

SpringBoot menyepadukan Lombok dan cara menyelesaikan masalah biasa

Laman web rasmi: Project Lombok

1

SpringBoot menyepadukan Lombok dan cara menyelesaikan masalah biasa

2. Sebab kegagalan anotasi Lombok

Selepas memperkenalkan kebergantungan Lombok dalam akan berkuat kuasa. Proses integrasi

1. Perkenalkan dependensi Lombok:

Salin kod berikut dan masukkan ke dalam pom.xml, tunggu gudang maven memuat turun dan memasang dependensi secara automatik , dan tiada klik panduan pakej automatik.

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

SpringBoot menyepadukan Lombok dan cara menyelesaikan masalah biasa

2 Pasang pemalam Lombok SpringBoot menyepadukan Lombok dan cara menyelesaikan masalah biasa

Klik Fail-》Setting-》Plugins-》Cari. dalam IDEA Selepas Lombok memasang pemalam, mulakan semula IDEA;

3. Gunakan Lombok untuk menjana contoh kod program kaedah lain untuk sifatSpringBoot menyepadukan Lombok dan cara menyelesaikan masalah biasaa. Tidak ditulis menggunakan kelas Entiti Lombok (program ini gemuk dan hodoh)

Gunakan kekunci pintasan yang disertakan dengan IDE untuk menjana kaedah getter/setter secara automatik:

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. Pengenalan Kaedah penjanaan Lombok (program ini nipis dan selesa untuk dilihat)

SpringBoot menyepadukan Lombok dan cara menyelesaikan masalah biasa Anda boleh menambah anotasi secara manual mengikut keperluan anda, atau anda boleh klik kanan -》Refactor-》 Lomok-》

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

Kebaikan dan keburukan (kemungkinan masalah adalah penyelesaian)

SpringBoot menyepadukan Lombok dan cara menyelesaikan masalah biasaKelebihan:

Lombok boleh menjana getter/setter secara automatik, sama dengan, toString dan kaedah lain untuk sifat pada masa penyusunan melalui anotasi , menghapuskan masalah membina semula kod ini secara manual, menjadikan kod kelas entiti program (entiti/pojo) kelihatan lebih "langsing" dan lebih bergaya.

Kelemahan (kemungkinan masalah):

Jika ia adalah pembangunan peribadi, masalah berikut mungkin berlaku:

1 Lombok kini menyokong JDK1.8, yang mungkin menjadi tidak sah selepas menaik taraf JDK versi. Kaedah Selesai:

a. Hasilkan getter/setter, equals, hashCode, toString dan kaedah pembina melalui kekunci pintasan IDE sendiri


dalam versi terkini DeLombok, anda boleh menggunakan alat ini untuk menjana kaedah di atas. Klik kanan dan pilih Refactored->DeLombok:

SpringBoot menyepadukan Lombok dan cara menyelesaikan masalah biasa

atau gunakan arahan:

java -jar lombok.jar delombok src -d src-delomboked
SpringBoot menyepadukan Lombok dan cara menyelesaikan masalah biasa untuk menukar fail kelas yang dilaksanakan oleh anotasi Lombok kepada Java sumber yang tidak menggunakan dokumen Lombok.

Menggunakan Lombok boleh memudahkan enkapsulasi JavaBean, tetapi ia akan menjejaskan kebolehbacaan. Di samping itu, cuba untuk tidak menggunakan anotasi ini @AllArgsConstructor ini menyediakan pembina gergasi, yang memberi peluang kepada dunia luar untuk mengubah suai semua sifat dalam kelas apabila memulakan objek Lagipun, beberapa sifat objek dalam kelas Java tidak boleh Semak. Pada masa yang sama, jika terdapat berbilang sifat dalam kelas Java, Lombok akan menyuntik berbilang pembina parameter ke dalam kelas Java, dan susunan parameter pembina dikawal sepenuhnya oleh Lombok.

3. Selepas menggunakan Lombok untuk menulis kod Javabean, kod lain yang bergantung pada javabean ini perlu memperkenalkan kebergantungan Lombok, dan tahap gandingan kod meningkat. Pada masa yang sama, anda juga perlu memasang pemalam Lombok dalam IDE.

4 Jika ia adalah pembangunan kolaboratif, anda perlu memberi perhatian kepada isu berikut:

Apabila pemalam Lombok diperkenalkan ke dalam kod program kami, orang lain juga mesti memuat turun dan memperkenalkan palam Lombok. -in, jika tidak, kod Java mungkin tidak berfungsi dengan betul.

Atas ialah kandungan terperinci SpringBoot menyepadukan Lombok dan cara menyelesaikan masalah biasa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam