Back-end/Spring-핵심& webMVC

Lombok @Setter 사용 지양 & lombok.config

prden 2023. 1. 7. 13:51

1. Lombok의 Setter 사용 지양해야하는 이유 - Builder 패턴을 사용해라

1) Setter 메소드를 사용하면 값을 변경한 의도를 파악하기 어렵다.

     왜, 어떠한 의도로 데이터를 변경하는지 명확하게 알 수 없다. 코드를 역추적해봐야 한다

2) 객체의 일관성을 유지하기 여럽다.

     자바 빈 규약을 따르면 Setter는 public으로 언제든지 변경할 수 있는 상태가 된다. 

     따라서 모든 곳에서 데이터를 변경할 수 있는 상태가 되기 때문에 객체의 일관성을 유지하기 어려워진다.

 

2. Setter의 대안

1) 생성자 오버로딩

    -> 생성자를 오버로딩하기, 그러나 멤버변수가 많고 다양한 생성자를 가지게 된다면 코드가 길어지고 가독성이 떨어짐           따라서 Builder 패턴 사용

public class School {
    private String region;
    private String name;
    
    public School(String region){
    	this.region = region;
    }
    public School(String region,String name){
    	this.region = region;
    	this.name = name;
    }

2) Builder 패턴 사용

    -> 빌더패턴은 필요한 데이터만 이용하여 위와같이 다양한 생성자를 가지게 하지 않고 클래스 생성이 가능하다. 전체 생성자 하나만 갖는 형태로 변경되어 유지보수 향상됨. 또한, 객체를 생성할 때 인자 값의 순서가 상관없다.

public class School {
    private String region;
    private String name;
    
    @Builder
    public Member(String region, int name){
    	this.region = region;
        this.name = name;
    }

https://prde.tistory.com/96

 

Builder Pattern(effective java)

1. 기본 : 생성자에 매개변수가 많다면 빌더 패턴 사용을 고려해라 - 생성자가 많을 경우 또는 오브젝트 생성 후 변경 불가능한 불변 오브젝트가 필요한 경우, 불변 오브젝트를 생성하여 오브젝

prde.tistory.com

3) 정적 팩토리 메소드

   -> 정적 팩토리 메서드를 사용하면 이름을 가질 수 있어서 반환될 데이터를 추측할 수 있다. 

public class School {
    private String region;
    private String name;
    
    public static void createMember(String region, String name){
    	this.region = region;
        this.name = name;
    }
    public static void createMemberName(String region){
    	this.region = region;
    }

3. lombok.config +a

lombok.Setter.flagUsage = error
lombok.AllArgsConstructor.flagUsage = error
lombok.data.flagUsage= error
lombok.addLombokGeneratedAnnotation = true

https://cheese10yun.github.io/lombok-config/

 

실무에서 Lombok 사용법 - lombok.config - Yun Blog | 기술 블로그

실무에서 Lombok 사용법 - lombok.config - Yun Blog | 기술 블로그

cheese10yun.github.io

 

4. Lombok Annotation 똑바로 알고 사용하기

 1) ToString (JPA 사용시 주의할 점)

   

 2) NoArgsConstructors

   

 3) AllArgsConstructors

   

 4) RequiredArgsConstructors 

https://dev-splin.github.io/spring/Spring-Lombok/

 

Spring : Lombok의 사용법 및 주의점

Lombok의 사용법 및 주의점 Lombok은 Java 기반 애플리케이션에서 VO,DTO,Entity 등을 보다 쉽게 작성하기 위해 사용되는 라이브러리입니다. Lombok은 Getter,Setter,ToString 등을 어노테이션을 이용하여 만들

dev-splin.github.io

JPA에서 롬복 사용할 때 

 

https://riimy.tistory.com/83

 

Lombok의 좋은 사용법

1. @Data 지양하기 @ToString @EqualsAndHashCode @Getter @Setter @RequiredArgsConstructor @Data는 위와 같은 모든 어노테이션을 따로 선언해줄 필요없습니다. 왜냐하면, @Data안에 이 모든 어노테이션이 포함되어있기

riimy.tistory.com