개발자의 오르막

[#SpringBoot ] Lombook 어노테이션 정리 본문

SpringFrameWork/SpringBoot

[#SpringBoot ] Lombook 어노테이션 정리

계단 2020. 5. 16. 15:30

# LomBook 어노테이션 정리

 

@NonNull Null 값이 될 수 없다는 것을 명시합니다.
NullPointerException에 대한 대비책이 될 수 있습니다.
@Cleanup 자동으로 close() 메소드를 호출하는 역할을 합니다.
@Getter/Setter 코드가 컴파일될 때 속성들에 대해서 Getter/Setter 메소드들을 생성합니다
@ToString toString() 메소드를 생성합니다.
@EqualsAndHashCode 해당 객체의 equals()와 hashCode() 메소드를 생성합니다.
@NoArgsConstructor 파라미터를 받지 않는 생성자를 만들어줌
@RequiredArgsConstructor 지정된 속성들에 대해서만 생성자를 만들어줌
@AllArgsConstructor 모든 속성에 대해서 생성자를 만들어줌
@Data @ToString @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor 를
모두 합친 어노테이션
@Value 불변 (immutable) 클래스를 생성할 때 사용
@Log Log 라는 변수를 이용해서 로그를 찍을 수 있음
@Builder 빌더 패턴을 사용할 수 있도록 코드를 생성
new AA().setA().setB().setC()와 같이 체이닝을 할 수 있는 코드를 생성
@SneakyThrows 예외 발생 시 Throwable 타입으로 반환합니다.
@Synchronized 메소드에서 동기화를 설정합니다.
@Getter(lazy=true) 동기화를 이용해서 최초 한 번만 getter를 호출

 

# Data 어노테이션

Data 어노테이션에 @toString 어노테이션이 포함되어 있다.

만일 모델의 부모-자식 관계가 설정될 경우, (Member - Address) 스택오버플로우 문제가 생길 수 있다.

회원의 칼럼으로, Id, username, address 가 있다고 가정할 때, @toString 으로 address 를 String 으로 풀어쓰려한다.

이 때 address 객체 안에는 Member 를 부모로 상속받기 때문에, address 안에서도 다시 Member를 String으로

풀어 쓰려기 때문에 무한 루프로 빠지게 된다.

이 때 StackOverFlow 가 발생하게 된다.

 

 

Comments