Spring/Lombok

롬복(Lombok), @AllArgsConstructor @NoArgsConstructor @RequiredArgsConstructor

JWonK 2022. 4. 28. 16:51
728x90
반응형

▶ 롬복(Lombok)

롬복(Lombok)은 Java 라이브러리로 반복되는 getter, setter, toString 등의 메서드 작성 코드를 줄여주는 코드 다이어트 라이브러리이다. 반복되는 getter, setter, 생성자의 작성은 코드의 가독을 저해시키고, 번거로운 작업이 될 수 있다. 이는 전체 코드가 복잡해지는 현상을 유발한다.

 

Lombok은 여러가지 어노테이션을 제공하고 이를 기반으로 코드를 컴파일과정에서 생성해주는 방식으로 동작하는 라이브러리이다. 즉 코딩과정에서는 롬복과 관련된 어노테이션만 보이고 getter와 setter 메서드 등은 보이지 않지만 실제로 컴파일된 결과물에는 코드가 생성되어있다.

 


 

간단한 예시 코드로 롬복의 편리함을 확인할 수 있다.

 

 

순수 Java 코드

public class Member {

    private String name;
    private Long id;
    private Long age;
    private Long height;
    private Long weight;


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getAge() {
        return age;
    }

    public void setAge(Long age) {
        this.age = age;
    }

    public Long getHeight() {
        return height;
    }

    public void setHeight(Long height) {
        this.height = height;
    }

    public Long getWeight() {
        return weight;
    }

    public void setWeight(Long weight) {
        this.weight = weight;
    }
    
}

-> 모든 필드값에 대한 getter와 setter만으로도 코드가 상당히 길다.

 

 

롬복을 적용한 코드

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class Member {

    private String name;
    private Long id;
    private Long age;
    private Long height;
    private Long weight;

}

-> 위 코드와 같은 기능을 하지만 상당히 코드가 간결해졌다.

 

위처럼 같은 기능을 하는 코드이더라도 롬복기능을 활용하면 매우 간결한 코드를 작성할 수 있다.

 


▶ @AllArgsConstructor @NoArgsConstructor @RequiredArgsConstructor

  @AllArgsArgsConstructor @RequiredArgsConstructor @NoArgsConstructor
기능 모든 필드 값을 파라미터로 받는 생성자를 만든다. final이나 @NonNull인 필드 값만 파라미터로 받는 생성자를 만든다. 파라미터가 없는 기본 생성자를 만든다.

 

 

 

Example)

import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;

@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
public class Member {
    
    private Long id;
    
    @NonNull
    private String name;
    
    @NonNull
    private String password;
    
    private String address;
}

 

Member member1 = new Member(); // -> @NoArgsConstructor
Member member2 = new Member("홍길동", "12345"); // -> @RequiredArgsConstructor
Member member3 = new Member(1L, "이순신", "거북선", "한양 어느 집"); // -> @AllArgsConstructor

 

728x90
반응형