>  기사  >  Java  >  Lombok Unleashed: 게터, 세터, 생성자, 빌더 등을 통해 Java 효율성 향상

Lombok Unleashed: 게터, 세터, 생성자, 빌더 등을 통해 Java 효율성 향상

王林
王林원래의
2024-07-16 17:46:50519검색

Lombok Unleashed: Elevating Java Efficiency with Getters, Setters, Constructors, Builders, and More

프로젝트 롬복 소개

Project Lombok은 컴파일 시간 동안 공통 Java 코드를 자동으로 생성하는 주석을 제공함으로써 많은 시간과 에너지를 절약함으로써 상용구 코드를 줄이고 코더의 생산성을 향상시키는 것을 목표로 하는 인기 있는 Java 라이브러리입니다.

프로젝트 롬복이란 무엇입니까?

프로젝트 Lombok은 getter, setter, 생성자, equals, hashCode 및 toString 메소드와 같은 반복적인 코드 구성을 수동으로 작성할 필요가 없도록 주석을 제공하여 Java의 장황함을 해결합니다. Lombok 주석으로 필드나 클래스에 주석을 추가함으로써 코더는 이러한 메소드를 자동으로 생성하도록 컴파일러에 지시하여 상용구 코드의 양을 줄이고 Java 클래스를 더 간결하고 읽기 쉽게 만들 수 있습니다.

프로젝트 롬복을 사용하는 이유는 무엇입니까?

Java에서 Project Lombok을 사용하면 생산성, 코드 품질 및 유지 관리 가능성 향상에 기여하는 몇 가지 강력한 이점을 얻을 수 있습니다.
프로젝트 롬복을 선택하는 몇 가지 이유는 다음과 같습니다.
“보일러플레이트 코드”를 줄여줍니다.
또한 코드 재사용성과 가독성도 향상됩니다.
구현이 매우 간단하고 복잡하지 않습니다.
"IDE"와 쉽게 통합됩니다.

Maven 프로젝트에서 Java로 Lombok을 구현하는 방법

우리 프로젝트의 대부분은 Maven을 기반으로 합니다. 따라서 프로젝트에 있는 "Pom.xml" 파일에 "Project Lombok" 종속성을 추가하기만 하면 됩니다.

maven 저장소로 이동하여 거기에서 Lombok Maven 저장소를 복사하고 "Pom.xml"에 최신 lombok 종속성을 추가하고 저장한 다음 프로젝트를 새로 고칩니다.

Java 프로젝트 Lombok의 Getters, Setters 기능

Java에서 가장 일반적인 방법은 "Java Beans" 패턴을 사용하여 getter 및 setter를 추가하는 것입니다. 대부분의 IDE는 이러한 패턴에 대한 코드를 자동으로 생성합니다.

"데이터 개체" 및 "데이터 팩터리"의 도움으로 getter 및 setter를 생성하여 이 접근 방식을 이해하는 코드를 살펴보겠습니다.

Lombok이 없는 데이터 개체

getter 및 setter 메소드를 수동으로 생성하기 위한 기존 JavaBeans 접근 방식은 작업을 완료하지만 특히 현대 Java 개발 환경에서는 바람직하지 않은 몇 가지 단점과 제한 사항이 있으며 그 단점은 주로 Lombok에서 다룹니다.

그래서 우리는 이 대신 Lombok 패턴을 사용하는 것을 선호합니다. Java로 구현하는 방법은 다음과 같습니다.

Java 프로젝트 Lombok의 생성자 기능

Lombok이 없는 생성자에서는 각 생성자를 수동으로 정의해야 하는데, 이는 특히 필드가 많은 클래스의 경우 지루하고 오류가 발생하기 쉽습니다. 또한 다양한 생성자 구성을 처리해야 하므로 코드가 더 복잡해질 수 있습니다.

Lombok은 @NoArgsConstructor, @AllArgsConstructor 및 @RequiredArgsConstructor 주석을 사용하여 이 프로세스를 단순화합니다.

롬복이 없는 생성자

Lombok 주석을 사용하면 수동으로 작성해야 하는 상용구 코드의 양이 줄어듭니다. Lombok을 사용하면 클래스와 필드에 주석을 달기만 하면 지정된 기준에 따라 생성자가 자동으로 생성됩니다. 이를 통해 더욱 깔끔하고 간결한 코드를 얻을 수 있습니다.

다양한 롬복 기능 및 속성

  1. ToString 생성
  • Java에서 toString()은 java.lang.Object 클래스에 정의된 메서드로, 객체의 문자열 표현을 반환하는 목적으로 사용됩니다. toString() 메소드는 Java의 모든 클래스에 의해 상속되며 Object 클래스의 기본 구현은 클래스 이름 뒤에 "at" 기호(@)와 객체 해시 코드의 16진수 표현이 포함된 문자열을 반환합니다.
  • 그러나 Object에서 제공하는 toString()의 기본 구현은 특정 클래스에 항상 의미가 있거나 유용하지 않을 수 있습니다. 따라서 개발자는 자신의 클래스에서 toString() 메서드를 재정의하여 객체의 상태나 속성을 더 잘 설명하는 사용자 정의 문자열 표현을 제공하는 것이 일반적입니다.
  • 예제에 따라 Profile 클래스는 toString()을 재정의하여 firstName, lastName, 명칭, 연령 정보가 포함된 문자열을 반환할 수 있습니다. toString()을 재정의하면 사람이 읽을 수 있는 형식으로 개체 정보를 쉽게 인쇄하거나 기록할 수 있으므로 디버깅, 로깅 또는 사용자에게 정보를 표시하는 데 도움이 될 수 있습니다.
  • ToString Lombok 주석을 사용하지 않고 Profile 클래스 내에서 toString() 메서드를 수동으로 구현해야 합니다. firstName, lastName, designation 및 age 필드를 연결하여 원하는 문자열 표현을 만듭니다. 이 수동 구현은 Lombok의 @ToString 주석과 동일한 결과를 얻습니다.

ToString 주석 기능을 사용하지 않음

  • @ToString 주석은 클래스에 대한 toString() 메서드를 생성하여 해당 필드의 문자열 표현을 제공합니다. 데이터 모델을 강화하므로 직접 작성하고 유지 관리할 필요가 없습니다.
  • 이 주석을 사용하면 profile 인스턴스에서 toString()을 호출하면 해당 필드의 값이 포함된 문자열이 반환됩니다.
  • @Exclude 주석은 Getters, Setters, ToString, EqualAndHashCode 등과 같은 다양한 주석에 유용할 수 있습니다. @ToString 주석 예와 함께 이를 이해해 보겠습니다.
  • 지정 필드에 @ToString(exclude = {“designation”}) 주석을 추가하여
  • Lombok은 @ToString이 생성한 toString() 메서드에 포함되지 않도록 제외합니다. 이는 객체의 문자열 표현에서 특정 필드를 표시하지 않으려는 경우 유용할 수 있습니다.

2. EqualAndHash코드 생성

  • Java에서 equals()와 hashCode()는 각각 객체 동일성과 해시 코드 생성을 구현하는 데 일반적으로 사용되는 두 가지 메서드입니다.
  • equals() 메서드: equals() 메서드는 두 개체가 같은지 비교하는 데 사용됩니다. 기본적으로 Object 클래스에서 제공하는 equals() 메서드는 객체 참조를 비교합니다. 즉, 비교되는 두 객체가 메모리의 동일한 인스턴스인 경우에만 true를 반환합니다. 그러나 객체 속성을 기반으로 의미 있는 동등 개념을 정의하려면 사용자 정의 클래스에서 equals() 메소드를 재정의해야 하는 경우가 많습니다.
  • hashCode() 메소드: hashCode() 메소드는 객체에 대한 해시 코드 값을 생성하는 데 사용됩니다. 해시 코드는 객체의 상태를 나타내는 정수 값이며 일반적으로 해시 테이블과 같은 해시 기반 데이터 구조에 사용됩니다. hashCode() 메소드는 객체를 해시 기반 컬렉션에 효율적으로 저장하고 검색할 수 있도록 해주기 때문에 중요합니다.
  • 이 예에서는 두 Profile 객체의 필드가 동일한지 비교하기 위해 equals() 메서드를 수동으로 구현하고 재정의했으며, hashCode() 메서드를 필드를 기반으로 해시 코드를 생성했습니다.
  • java.util.Objects 클래스의 Objects.equals() 메서드를 사용하여 필드가 동일한지 비교하고 Objects.hash() 메서드를 사용하여 해시 코드를 생성합니다.

EqualAndHashCode 주석 기능을 사용하지 않음

  • @EqualsAndHashCode 주석은 클래스 필드를 기반으로 equals() 및 hashCode() 메서드를 생성합니다.
  • 이 주석을 통해 Lombok은 클래스의 모든 필드를 사용하여 equals() 및 hashCode() 메서드를 생성합니다.
  • 이렇게 하면 이러한 메소드를 수동으로 구현할 필요가 없어 상용구 코드가 줄어들고 코드 유지 관리성이 향상됩니다.

3. 데이터 주석
@data 주석을 사용하지 않으면 getter, setter 및 생성자 기능을 코드에 수동으로 구현해야 합니다.

  • 데이터 주석 기능을 사용하지 않음

  • @data 주석은 @Getter, @setter, @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode 및 기타 여러 주석을 번들로 제공하는 편리한 단축키입니다.

  • Lombok은 @data를 사용하여 클래스에 선언된 필드를 기반으로 이러한 메서드를 자동으로 생성합니다. 이를 통해 작성하고 유지 관리해야 하는 상용구 코드의 양이 크게 줄어들어 코드가 더욱 간결해지고 읽기 쉬워집니다.

  1. 빌더 패턴
  • 프로필 예시로 돌아가서, 새 인스턴스를 구성하려면 잠재적으로 4개의 인수로 구성된 생성자를 사용해야 하는데, 클래스에 추가 속성을 도입하면 이 작업이 다루기 어려워집니다.
  • 다행히 Lombok은 새로운 인스턴스 생성을 위한 빌더 패턴 활용을 용이하게 하는 @builder 기능을 갖춘 강력한 솔루션을 제공합니다. 이 기능을 Profile 클래스에 통합해 보겠습니다.

패키지 org.example.dataobjects;

롬복 가져오기.*;

@게터
@세터
@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
@ToString(제외 = {"지정"})
@EqualsAndHashCode
@빌더
@데이터
공개 수업 프로필 {
개인 문자열 firstName;
개인 문자열 성;
개인 문자열 지정;
비공개 연령;

public static void main(String[] args) {

// 빌더를 사용하여 프로필 인스턴스 생성
프로필 프로필 = Profile.builder()
.firstName("파트")
.lastName("카쓰로티야")
.designation("QA 자동화 엔지니어")
.나이(23)
.build();
}
}

델롬복

  • Delombok은 Lombok 주석의 효과를 반전시키는 Project Lombok에서 제공하는 도구로, 본질적으로 코드를 "delombokifying"합니다. 주석을 확장하고 주석이 생성하는 해당 상용구 코드로 대체하여 Lombok 주석이 포함된 Java 소스 코드를 일반 Java 코드로 변환할 수 있습니다.
  • Delombok의 주요 목적은 Lombok 주석을 직접 지원하지 않는 환경이나 도구와의 호환성 및 상호 운용성을 촉진하는 것입니다. 예를 들어 개발 환경에 Lombok이 설치되어 있지 않은 개발자와 코드를 공유해야 하거나 Lombok 주석을 이해하지 못하는 도구를 사용하여 Lombok 주석이 달린 코드를 분석하거나 리팩터링하려는 경우 Delombok을 사용하여 변환할 수 있습니다. 해당 상황에서 이해하고 사용할 수 있는 형식으로 코드를 변환합니다.
  • Delombok은 명령줄을 통해 호출하거나 Maven 또는 Gradle과 같은 빌드 도구에 통합할 수 있습니다. 소스 코드에서 Delombok을 실행하면 Java 파일을 처리하고 Lombok 주석을 확장하며 Lombok 주석 없이 새 Java 파일을 생성합니다. 결과 코드는 기능적으로 원래 코드와 동일하지만 Lombok에 대한 종속성은 없습니다.
  • 전반적으로 Delombok은 Lombok 주석을 사용하여 코드베이스의 상호 운용성과 유지 관리성을 향상시키는 Project Lombok에서 제공하는 유용한 도구입니다. 이를 통해 개발자는 다양한 개발 환경 및 도구와의 호환성을 유지하면서 Lombok의 이점을 활용할 수 있습니다.

결론

이 게시물에서는 제가 가장 유용하다고 생각하는 기능을 강조하고 있지만 Lombok은 다양한 추가 기능과 사용자 정의 기능을 제공합니다.
Lombok의 문서는 각 주석에 대한 심층적인 설명과 예제를 제공하는 귀중한 리소스입니다. 이 게시물에 관심이 있으시면 Lombok의 문서를 자세히 살펴보고 더 많은 가능성을 찾아보시기 바랍니다.
또한, 프로젝트 사이트는 다양한 프로그래밍 환경에서 Lombok을 통합하는 데 대한 포괄적인 가이드를 제공합니다. Eclipse, NetBeans, IntelliJ 등을 사용하든 Lombok은 작업 흐름과 원활하게 통합되므로 안심하세요. IDE 간을 자주 전환하는 사람으로서 저는 모든 플랫폼에서 Lombok의 다양성과 안정성을 입증할 수 있습니다.
전반적으로 Project Lombok은 Java 개발을 간소화하고, 코드의 장황함을 줄이고, 모범 사례를 장려하는 포괄적인 기능 세트를 제공합니다.
Project Lombok은 Java 테스트를 간소화하고, 코드의 장황함을 줄이고, 모범 사례를 장려하는 포괄적인 기능 세트를 제공합니다. Lombok 빌더와 Lombok 생성자를 통합함으로써 테스터는 코드를 더욱 단순화하고 유지 관리성을 향상시킬 수 있습니다.

위 내용은 Lombok Unleashed: 게터, 세터, 생성자, 빌더 등을 통해 Java 효율성 향상의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.