>  기사  >  Java  >  SpringBoot는 Lombok과 일반적인 문제를 해결하는 방법을 통합합니다.

SpringBoot는 Lombok과 일반적인 문제를 해결하는 방법을 통합합니다.

PHPz
PHPz앞으로
2023-05-20 12:46:232406검색

Lombok

주석을 사용하면 Lombok은 Java 코드를 단순화하고 개발 효율성을 향상시킬 수 있습니다. 이는 그 자체로 훌륭한 Java 코드 라이브러리입니다. 기회주의적 구문 설탕을 사용하여 Java 코딩을 단순화하고 Java 코드를 간소화하는 방법을 제공합니다. 그러나 Lombok은 표준 Java 라이브러리가 아닙니다.

웹 개발 과정에서 자주 작성해야 하는 Java 클래스에는 해당 getter/setter, 생성자, 동등 및 기타 메소드를 추가하는 데 시간이 필요합니다. 속성이 많을 경우 getter/setter 메소드가 많아질 수 있으며, 이는 매우 길고 기술적인 내용이 많지 않습니다. 속성이 수정되면 해당 메소드를 수정하는 것을 잊어버리기 쉽습니다.

SpringBoot는 Lombok과 일반적인 문제를 해결하는 방법을 통합합니다.

공식 웹사이트: Project Lombok

1. Lombok 공통 주석

@Setter를 제공합니다. 속성에 주석이 달린 설정 메소드 @Setter를 제공합니다. Log4j는 클래스에 주석을 달고, log @NoArgsConstructor라는 속성을 가진 log4j 로그 객체를 클래스에 제공합니다. AllArgsConstructor는 클래스에 주석이 달려 있습니다. 클래스에 대해 완전히 매개변수화된 생성자 메서드를 제공합니다@Cleanup:Close the stream@Builder주석이 달린 클래스는 생성자 패턴을 추가합니다@ 동기화됨 동기화 잠금@SneakyThrows예외 포착, 예외 포착을 위한 try/catch와 유사@NonNull이 주석을 매개변수에 추가하세요. 매개변수가 null이면 null 포인터 예외가 발생합니다. be throw @Value 주석은 @Data와 유사합니다. 기본적으로 모든 멤버 변수는 비공개 최종 수정으로 정의되며 set 메서드는 생성되지 않습니다

SpringBoot는 Lombok과 일반적인 문제를 해결하는 방법을 통합합니다.

2. Lombok 주석 실패 이유

pom에 Lombok 종속성을 도입한 후. 통합 프로세스1. Lombok 종속성 소개:

다음 코드를 복사하여 pom에 삽입합니다.

<!--导入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과 일반적인 문제를 해결하는 방법을 통합합니다.

2. IDEA에서 파일-》설정-》플러그인-》을 클릭하고 Lombok을 검색한 후 플러그인을 설치하고 IDEA를 다시 시작하세요.

SpringBoot는 Lombok과 일반적인 문제를 해결하는 방법을 통합합니다.

3. Lombok을 사용하여 Getter/setter 속성 및 기타 메소드 프로그램 코드 예제 생성

a. Lombok은 엔터티 클래스를 작성하는 데 사용되지 않습니다(프로그램은 뚱뚱하고 보기 흉함)

SpringBoot는 Lombok과 일반적인 문제를 해결하는 방법을 통합합니다.IDE 자체 단축키를 사용하여 자동으로 getter/setter 생성 방법:

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 .롬복 생성 방법 소개(프로그램이 슬림하고 보기 편함)

필요에 따라 수동으로 주석을 추가하거나 마우스 오른쪽 버튼을 클릭할 수 있습니다 -》Refactor-》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 및 기타 메서드를 자동으로 생성할 수 있으므로 수동으로 수행해야 하는 문제를 제거합니다. 이러한 코드를 다시 작성하고 프로그램 엔터티 클래스(엔티티/pojo) 코드를 더욱 "가늘고" 세련되게 보이게 만듭니다. SpringBoot는 Lombok과 일반적인 문제를 해결하는 방법을 통합합니다.

단점(발생 가능한 문제):

개인 개발인 경우 다음과 같은 문제가 발생할 수 있습니다.

1. Lombok은 현재 JDK1.8을 지원하지만 JDK 버전을 업그레이드한 후에는 유효하지 않을 수 있습니다.
a. 단축키 Alt+Insert는 getter/setter, equals, hashCode, toString 및 생성자 메서드를 생성합니다.


DeLombok 최신 버전에서는 이 도구를 사용하여 위 메서드를 생성할 수 있습니다. 마우스 오른쪽 버튼을 클릭하고 Refactored->DeLombok:

SpringBoot는 Lombok과 일반적인 문제를 해결하는 방법을 통합합니다.

을 선택하거나

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

명령을 사용하여 Lombok 주석으로 구현된 클래스 파일을 Lombok을 사용하지 않는 Java 소스 파일로 변환합니다.

SpringBoot는 Lombok과 일반적인 문제를 해결하는 방법을 통합합니다.Lombok을 사용하면 JavaBean 캡슐화를 단순화할 수 있지만 가독성에 영향을 미칩니다. 또한 이 주석은 @AllArgsConstructor를 사용하지 마십시오. 이 주석은 객체를 초기화할 때 외부 세계에 클래스의 모든 속성을 수정할 수 있는 기회를 제공합니다. 이는 매우 안전하지 않습니다. Java 클래스의 객체는 개정되어서는 안 됩니다. 동시에 Java 클래스에 여러 속성이 있는 경우 Lombok은 여러 매개변수 생성자를 Java 클래스에 주입하고 생성자 매개변수의 순서는 Lombok에 의해 완전히 제어됩니다.

3. Lombok을 사용하여 Javabean 코드를 작성한 후에는 이 Javabean을 사용하는 다른 코드에 Lombok 종속성을 도입해야 하며 코드 결합 정도가 증가합니다. 동시에 IDE에 Lombok 플러그인도 설치해야 합니다.

4. 공동 개발이라면 다음 사항에 주의해야 합니다.

Lombok 플러그인이 우리 프로그램 코드에 도입되면 다른 사람들도 Lombok 플러그인을 다운로드하여 도입해야 합니다. 그렇지 않으면 Java 코드가 제대로 실행되지 않을 수 있습니다.

Annotation Function
@Data 클래스의 모든 속성과 설정 메소드는 속성에 주석이 달린 equals, canEqual, hashCode, toString 메소드

위 내용은 SpringBoot는 Lombok과 일반적인 문제를 해결하는 방법을 통합합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제