🚀 Lombok
보통 JAVA에서는 많은 멤버변수가 있고, Getter, Setter, toString 등 직접 코드를 입력해줘야 하는데,
Lombok은 VO/DTO/Domain 객체에 필요한 Getter Setter, toString 메서드, 생성자 등을 자동으로 생성을 해 반복 메서드 작성 코드를 줄여주는 코드 다이어트 라이브러리이다.
Lombok은 여러가지 어노테이션을 제공하고, 이를 기반으로 반복 소스코드를 컴파일 과정에서 생성해주는 방식으로 동작하는 라이브러리이다.
🚀 어노테이션
- 1. @Getter / @Setter
- 특정 필드 위에서 어노테이션을 붙여주면, 자동으로 생성된 접근자와 설정자 메서드를 사용할 수 있다. 클래스 위에 붙여주는 경우에는 모든 필드에 접근자와 설정자가 자동으로 생성된다
- @NoArgsConstructor / @AllArgsConstructor / @RequiredArgsConstructor
- 생성자를 자동으로 생성해주는 어노테이션
- @NoArgsConstructor - 매개변수가 없는 기본 생성자를 생성한다.
- @AllArgsConstructor - 필드 값을 모두 포함한 생성자를 생성해준다.
- @RequiredArgsConstructor - final필드와 @NonNull 어노테이션이 붙은 필드에 대한 생성자를 생성하여 특정 변수만을 활용하는 생성자를 생성한다.
- 생성자를 자동으로 생성해주는 어노테이션
- @ToString
- 필드를 기반으로 ToString 메서드를 자동생성하며, 클래스명(필드1 이름= 필드1 값, 필드2이름 = 필드2값)으로 출력이 된다. @ToString(exclude = "필드명") 을 사용하여 원하지 않는 필드는 제외할 수 있다.
- @EqualsAnsHashCode
- Equals와 hashCode 메서드를 자동으로 생성해주며, callSuper를 사용해서 메서드 자동 생성시 부모 클래스의 필드까지 고려할 것인지를 설정할 수 있다. callSuper=true 이면, 부모 클래스 필드 값도 동일한지 고려하고, callSuper=false(기본값)로 설정하면 자신 클래스의 필드 값들만 고려한다.
- @Data
- @Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor를 한번에 생성해준다.
- @Log4j2
- 자바 로깅을 위한 라이브러리, log.info() 를 이용한다.
실습
🚀 빌더 패턴(Builder Pattern)
GoF 디자인 패턴 중 생성 패턴에 해당한다.
빌더 패턴은 복잡한 객체를 생성하는 클래스와 표현하는 클래스를 분리하여 동일한 절차에서도 서로 다른 표현을 생성하는 방법을 제공한다.
빌더 패턴 적용시 효과
- 불필요한 생성자 제거
- 데이터의 순서에 상관없이 객체 생성 가능
- 명시적 선언으로 이해하기 쉬움
// ProfileDTO
@ToString
@Data // @Getter + @Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ProfileDTO {
private String name;
private String age;
private String weight;
private String height;
}
// Test
@Test
public void testfunc2() {
ProfileDTO dto = ProfileDTO.builder()
.weight("56.6");
.name("홍길동")
.height("188.5")
.age("44");
.build();
System.out.println("빌더 패턴 생성 확인 : " + dto.toString());
System.out.println("이름 : " + dto.getName());
System.out.println("나이 : " + dto.getAge());
System.out.println("키 : " + dto.getHeight());
System.out.println("몸무게 : " + dto.getWeight());
ProfileDTO dto2 = ProfileDTO.builder()
.name("남길동")
.height("188.5")
.build();
System.out.println("빌더 패턴 생성 확인 : " + dto.toString());
'Backend > SPRING' 카테고리의 다른 글
[Spring]MyBatis (0) | 2022.08.01 |
---|---|
[Spring] Connection Pool (0) | 2022.08.01 |
[Spring] DB OJDBC (0) | 2022.08.01 |
[Spring] Logj4 (0) | 2022.08.01 |
[Spring] 스프링 프레임워크, Spring FrameWork (0) | 2022.07.11 |