1. Lombok library @Annotation
1.1. Lombok
Lombok(롬복)은 MIT 라이선스로 배포되는 오픈소스 라이브러리로서 annotation 주석으로 VO(Value Object), DTO(Data Transfort Object), Entity Class 등을 만들때 Getter/Setter 및 toString()을 자동화 시켜줍니다.
1 | Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java. |
Lombok 사용방법
Lombok을 사용하기 위해서는 해당 라이브러리를 다운을 받아야합니다. IntellJ같은 경우는 플러그인을 설치하여 Lombok을 다운받으면 되고 Gradle or Maven Dependency를 추가해주어야합니다.
모든 설치가 완료되면
IntellJ Configuration
IntelliJ의 File > Settings > Build, Execution, Deployment > Compiler > Annotation Processors를 선택 한 후 "Enable annotation processing"을 체크
해당 설정을 해주는 이유는 Lombok을 작업중에도 동작시키기 위해서는 해당과 같은 설정을 해주셔야 Lombok이 정상적으로 동작하게 됩니다.
1 | # gradle |
1.2. @Getter, @Setter
Lombok에서 가장 많이 사용되는 어노테이션인 @Getter와 @Setter에 대해서 설명드리겠습니다.
기존에 스프링에서는 필드를 선언하면 명시적으로 선언을 매번해주어야하였지만, Lombok을 사용하면 필드를 선언하면 Getter(),Setter() 메소드를 자동으로 생성해줍니다.
1 | private int item; |
필드 레벨이 아닌 클래스 레벨에 @Getter 또는 @Setter를 선언해줄 경우, 모든 필드에 접근자와 설정자가 자동으로 생성됩니다.
1.3. NoArgsConstructor
@NoArgsConstructor 어노테이션은 파라미터가 없는 기본 생성자를 생성해줍니다.
1.4. @AllArgsConstructor
@AllArgsConstructor 어노테이션은 모든 필드 값을 파라미터로 받는 생성자를 만들어줍니다.
1.5. @RequiredArgsConstructor
@RequiredArgsConstructor 어노테이션은 final이나 @NonNull인 필드 값만 파라미터로 받는 생성자를 만들어줍니다.
1.6. @Data
Class Level에서 @Data 어노테이션을 붙여주면, 모든 필드를 대상으로 접근자와 설정자가 자동으로 생성됩니다. 그리고, final 또는 @NonNull 필드 값을 파라미터로 받는 생성자가 만들어지며, toStirng, equals, hashCode 메소드가 자동으로 생성되게 됩니다. 개인적으로는 @Data를 무분별하게 사용하면 나중에 유지보수측면에서 시간이 많이 소요되고 불필요한 소스양이 늘어날 것으로 생각하며 결론적으로 @Data는 지양하고 무분별한 Setter 남용을 하지 않도록 해야할 것입니다.
1.7. @Builder
@Builder Annotation은 모델 객체를 생성할 때 Builder를 자동으로 추가해 주는 Annotation입니다. 해당 Annotation을 사용하면 Builder Pattern을 적용할 수 있습니다.
Builder Annotation 미적용
1 | public class User { |
Builder Annotation 적용
1 |
|
Builder pattern 사용
1 | public class Test { |
References