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
'JAVA' 카테고리의 다른 글
다형성(Polymorphism) (0) | 2022.06.21 |
---|---|
Optional.of 와 Optional.ofNullable 의 차이 (0) | 2022.05.13 |
(Java) 로그관리! Logger 사용 이유 및 설정 방법 (0) | 2022.03.27 |
[디자인 패턴]Builder pattern 이란? (0) | 2022.03.22 |
Java 8 LocalDateTime 직렬화 역직렬화 오류 (0) | 2022.03.02 |