이번 글에서는 실무에서 편리하게 사용할 수 있는 Lombok라이브러리에 대해서 알아보려고 합니다.
- @Getter / @Setter
- @AllArgsConstructor
- @NoArgsConstructor
- @RequiredArgsConstructor
- @Data
먼저, Lombok은 많은 양의 반복되는 소스코드를 annoation기반으로 개발자가 편리하게 사용할 수 있도록 도움을 주는 라이브러리입니다. 위에 선언한 어노테이션 뿐만 아니라 더 다양한 어노테이션이 존재하지만, 대표적으로 많이 사용하는 어노테이션을 공부해보려고 합니다.
@Getter / @Setter
@Getter / @Setter는 Lomgok라이브러리를 사용해보지 않아도, 개발자라면 대충 어떤 기능인지 아실거라고 생각합니다. 보통 VO같은 Class에서 VO에 컬럼들을 선언하고 그 컬럼들의 값을 가져오기위해 get[?] 이런식으로 메소드를 선언 했습니다. 그런데 해당 VO위에 @Getter / @Setter 어노테이션을 선언하게 되면 아래와 같은 결과를 얻을 수 있습니다.
@Getter / @Setter 어노테이션을 사용하면 기존 컬럼을 수정할때 발생되는 오타의 위험도 줄어들고 코드량도 줄어드는 장점이 있습니다.
@AllArgsConstructor
@AllArgsConstructor는 모든 필드를 인자로 받는 생성자를 만들어 주는 어노테이션입니다.
@NoArgsConstructor
@NoArgsConstructor는 인자가 없는 생성자를 만들어 주는 어노테이션입니다.
@RequiredArgsConstructor
@RequiredArgsConstructor는 (@AllArgsConstructor / @NoArgsConstructor) 어노테이션과는 다르게 final 키워드와 @NonNull이 붙은 필드에 대한 생성자를 생성하는 역할 뿐만아니라 의존성주입(DI)에도 영향을 미치게 됩니다.
즉, 생성자 주입을 받기위해 final키워드를 선언해두었는데 @RequiredArgsConstructor을 사용하지 않거나 생성자를 생성하지 않으면 아래와 같이 컴파일 오류가 나서 쉽게 오류를 찾아낼 수 있는 장점이 있습니다.
@Data
@Data는 위에서 설명해드린 어노테이션 뿐만아니라 다른 어노테이션도 포함하는 끝판왕이라고 생각하시면 됩니다.
즉, Getter, Setter, AllArgsConstructor, NoArgsConstructor, RequiredArgsConstructor, toString, EqualsAndHashCode어노테이션을 모두 합한 결정체입니다.
'Java and Spring' 카테고리의 다른 글
[Spring] 빈 후처리기 (0) | 2021.12.11 |
---|---|
[Spring] 프록시 팩토리 (0) | 2021.12.08 |
[Java] CGLIB(Code Generator Library) (0) | 2021.12.04 |
[Java] 동적 프록시(Dynamic Proxy) (0) | 2021.12.01 |
[Java] ThreadLocal 이해 및 활용 (0) | 2021.11.13 |