JAVA

롬복(lombok) .. 그 기능에 관해서

쿠카이든 2022. 3. 31. 11:03
728x90
  • Maven 설정 추가
<dependency> 
    <groupId>org.projectlombok</groupId> 
    <artifactId>lombok</artifactId> 
    <version>1.18.16</version> 
    <scope>provided</scope> 
</dependency>
  • 플러그인 설치(intellij 기준, 설정 → 플러그인 → lombok 검색)
  • 롬복에서 자주 쓰는 것들
    • @Getter @Setter -> 각각 getter, setter 추가
    • @Data -> 한번에 getter, setter 추가
    • @NoArgsConstructor 파라미터가 없는 기본 생성자를 생성
    • @AllArgsConstructor 모든 필드 값을 파라미터로 받는 생성자를 생성
    • @RequiredArgsConstructor final이나 @NonNull인 필드 값만 파라미터로 받는 생성자를 생성
@NoArgsConstructor
@RequiredArgsConstructor
@AllArgsConstructor
public class User {
    private Long id;
    @NonNull
    private String username;
    @NonNull
    private String password;
    private int[] scores;
}
User user1 = new User();
User user2 = new User("dale", "1234");
User user3 = new User(1L, "dale", "1234", null);
  • @Builder 사용
    • 우선 기존 생성자 패턴은 아래와 같은 단점을 가지고 있다.
    • 다른사람이 코드를 볼때 파라미터의 순서가 정확하게 전달 되었는지 확인하기 조금 힘들 수 있다.
@Getter
@Setter
public class Car {

    private String id;
    private String name;

    public Car(String id, String name) {
        this.id = id;
        this.name = name;
    }
}
public class CarImpl {

    private String id = "1";
    private String name = "carTest";

    Car car1 = new Car(id, name);
    Car car2 = new Car(name, id);
}
  • builder 패턴을 활용하면 해결되는데, 롬복(@Builder)을 활용하면 보다 코드를 줄일 수 있다.
    • 각 파라미터의 주입 순서가 명확히 파악되어 혼동의 여지가 줄어든다.
@Getter
@Setter
public class Car {

    private String id;
    private String name;

    @Builder    // 생성자를 만든 후 그 위에 @Builder 애노테이션 적용
    public Car(String id, String name) {
        this.id = id;
        this.name = name;
    }
}
public class CarImpl {

    private String id = "1";
    private String name = "carTest";

    Car car3 = Car.builder()
            .id(id)
            .name(name)
            .build();
}

 

728x90