@Data는 지양
@NoArgsConstructor 파라미터가 없는 기본 생성자를 생성
@RequiredArgsConstructor final이나 @NonNull인 필드 값만 파라미터로 받는 생성자
- 생성자 의존성 주입 시 사용
@AllArgsConstructor 모든 필드 값을 파라미터로 받는 생성자 생성
- 매개변수 순서, 개수 변경 시 문제
기본 사용
@ToString
양방향 연산관계에 있는 경우는 exclude로 제외 처리
@Getter
builder 패턴
매개변수 순서, 개수 변경 시 용이
클래스 상단 @builder 사용
- 생성자가 없을 경우 모든 멤버변수를 받는 생성자 생성(@AllArgsConstructor(access = AccessLevel.PACKAGE))
-> 동일 패키지에서 생성자로 접근 가능
-> 생성자로 접근 시 id, date 항목과 같이 생성되지 않아도 되는 항목도 매개변수로 넣어야함
-> @AllArgsConstructor(access = AccessLevel.PROTECTED)로 생성자를 넣어줘도 가능
- 필드 변수 final 선언 가능
생성자 메소드 상단 @builder 사용
- 필요한 매개변수만 받을 수 있음
- 필드 변수 final 불가
(Setter로도 접근불가하여 불변)
- 변경이 필요한 필드변수에 대해서는 개별 @setter 지정
- Mybatis 사용하려면 @NoArgsConstructor(access=AccessLevel.PROTECTED)를 사용
(기본 생성자가 없기에 에러 발생, 프로젝트에서 직접 호출 불가하게 protected)
- 필드 변수 추가 시 생성자 메소드 변경 필요(매개변수 받을 경우)
자바 디컴파일러를 사용하여 확인 가능
가급적 후자 방법 사용
'Lang > Java' 카테고리의 다른 글
404 에러 Origin 서버가 대상 리소스를 위한 현재의 representation을 찾지 못했거나, 그것이 존재하는지를 밝히려 하지 않습니다. (0) | 2022.01.16 |
---|---|
STS4 실행 시 JDK 하위 버전 설정 에러 (0) | 2021.12.30 |
List<HashMap<String, Object>> 값을 Mybatis에서 1건만 가져오기 (0) | 2021.12.28 |
lombok Unable to make protected final 에러 시 (0) | 2021.12.11 |
jar 찾아서 종료 (0) | 2021.11.14 |