Red Glitter Pointer

 

 Java 라이브러리 Lombok, 자주 사용하는 annotation 정리!

Lombok 이란?

어노테이션 기반으로 코드 자동완성 기능을 제공하는 라이브러리.

코드 자동 생성을 통한 편의성, 생산성 증가

코드의 길이가 줄어듬으로 가독성 유지보수성 향상

Builder 패턴의 적용, Log 생성 등 편의성

 

 

 

 

Annotation 정리

@NoArgsConstructor 파라미터(매개변수)가 없는 생성자를 생성한다.
@RequiredArgsConstructor final, @NonNull이 있는 필드를 포함하여 생성자를 생성한다.
@AllArgsConstructor 모든 필드를 파라미터(매개변수)로 갖는 생성자를 생성한다.
@Getter 코드가 compile될 때 getter 메소드 생성한다.
- 속성 @Getter(lazy = true) 사용 시 최초 한 번만 Getter 호출.
이후에는 캐시된 값을 사용한다
@Setter 코드가 compile될 때 setter 메소드 생성한다.
@ToString toString() 메소드 생성한다.
@EqualsAndHashCode equals(), hashCode() 메소드를 생성한다.
@Data @Getter(모든 속성)
@Setter(final이 붙지 않은)
@ToString
@EqualsAndHashCode
@RequiredArgsConstructor
@With with 메소드를 생성한다.
@Builder 해당 클래스에 빌터 패턴을 사용할 수 있도록 해준다
@Log log라는 변수를 이용하여 로그 기능 사용 가능

컴파일 시 : private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(this.class.getName()); 코드가 생성되는 것 
@Log4j, @Slf4J 로그 기능 사용 가능
@SneakyThrows 예외 발생 시 Throwable 타입으로 반환해준다.
JVM(.class)에서 검사 여부 관계 없이 모든 예외에 대해 throw동작.

📌 사용 시 주의해야하는 어노테이션임. 
@Synchronized 메소드에서 동기화 설정
동기화 관련 문제 발생을 해당 어노테이션을 통해 가상의 필드 레벨에서 조금이나마 안전하게 락을 걸어준다 
@NonNull 필드의 값이 null이 될 수 없음을 명시
@Value 불변 클래스(Immutable Class) 를 생성

모든 필드를 Private, Final 로 설정하고 Setter 생성하지 않음.
Final이 붙기 때문에 Setter가 존재할 수 없는 것 !

 

 

 

+ Recent posts

loading