반응형
Lombok
Lombok은 자바의 반복 메서드 작성 코드를 줄여주는 코드 다이어트 라이브러리이다.
보통 DTO, Model, Entity의 경우 여러 속성이 존재하고 이들의 프로퍼티에 대해서 Getter, Setter, 생성자 등 매번 작성해줘야 하는 부분을 자동으로 만들어주는 라이브러리이다.
코딩과정에서는 어노테이션만 보이지만, 실제 컴파일된 .class
파일에는 연관 코드들이 생성되어 있게 된다.
귀찮은 과정을 줄여주고 반복되는 코드작성을 대신하기 때문에 많은 개발자들이 사용하고 있지만 호불호가 갈리는 라이브러리이기도 하며, 개별 작동방식을 잘 알고 사용하는 것이 좋다.
- @Getter, @Setter
- @Getter와 @Setter를 클래스 이름 위에 적용 시키면 모든 non-static 변수들에 대한 getter, setter 메소드를 사용할 수 있고, 변수이름 위에 따로 사용할 수도 있다.
- 자동으로 생성되는 메소드의 기본은 public이며
AccessLevel
을 통해 명시적으로 생성할 수도 있다. - 열거형 변수에는 getter를 사용할 수 있지만, setter를 사용할 수 없다.
- 이름이 같고 매개변수의 수가 같은 메소드가 존재한다면 혼동을 방지하여 메소드가 생성되지 않는다.
- @NonNull
- 메소드나 생성자에 사용하게 되면 null check를 해준다.
- @AllArgsConstructor
- 모든 변수를 사용하는 생성자를 만들어준다.
- @NoArgsConstructor
- 파라미터가 없는 기본 생성자를 만들어준다.
- @RequiredArgsConstructor
- 특정 변수만을 활용하는 생성자를 만들어준다.
- 초기화 되지 않은
final 필드나,
@NonNull` 어노테이션이 붙여진 필드에 대해 생성자를 만들어준다.
- @EqaulsAndHashCode
- 클래스에 대한 eqauls 함수와 hashCode 함수를 생성해준다.
@EqualsAndHashCode(of = {"name", "description"}, callSuper = false) public class Example extends Common { String name; String description; }
- 서로 다른 두 객체에서 특정 변수의 이름이 같은 경우 같은 객체로 판단하고자 할 때 위와 같이 사용한다.
callSuper=false
는 Common을 상속하는데, 이 상위 클래스는 적용시키지 않을 때 사용한다..include
나.Exclude
를 활용해서 명시적으로 선택할 수도 있다.- 자기 자신을 포함하는 배열을 가지거나 순환 참조가 존재하는 경우 명시적으로 제외하지 않으면
StackOverFlowError
가 발생한다.
- @ToString
- 클래스 변수들의
ToString()
메소드를 생성해준다. - 출력을 원하지 않는 변수는
@ToString.Exclude
어노테이션을 붙여주면 제외할 수 있다. callSuper=true
는 마찬가지로 상위클래스에 대해서 적용하고자 할때 사용된다..include
나.Exclude
를 활용해서 명시적으로 선택할 수도 있다.
- 클래스 변수들의
- @Data
@Getter, @Setter, @RequiredArgsConstructor, @EqaulsAndHashCode, @ToString
어노테이션을 자동생성한다.
- @Value
@Data
의 불변 클래스 버전으로 모든 필드를private final
로 만들고 setter는 생성되지 않는다.- 클래스 또한
final
로 만든다.
- @Builder
- 해당 클래스의 객체 생성에 빌더 패턴을 적용시켜준다.
- 모든 변수들에 대해 빌더 패턴을 적용하려면 클래스 위에 어노테이션을 붙이고, 특정 변수만 하고 싶은 경우는 원하는 생성자를 생성하고 생성자 위에 어노테이션을 붙여준다.
- 오직
@NoArgsConstructor
와 함께 사용하면 컴파일 에러가 난다. 빌더 패턴을 위한 모든 프로퍼티를 필요로 하기 때문에@AllArgsConstructor
도 반드시 함께 사용해야 한다. 모든 생성자를 직접 만들어도 된다
- @Delegate
- 한 객체의 메소드를 다른 객체로 위임한다.
음.. 잘 쓰지 않는 것 같다
- @Log4j2
- 해당 클래스의 로그 클래스를 자동완성 시켜준다.
- @CleanUp
- close()를 호출해준다.
반응형
'웹 프로그래밍 > [ Spring Boot ]' 카테고리의 다른 글
[ SpringBoot ] 06. ResponseEntity에 관하여 (0) | 2021.10.12 |
---|---|
[ SpringBoot ] 05. RestController가 뭐죠? (0) | 2021.10.12 |
[ SpringBoot ] 03. Spring의 Bean Scope를 알아보자 (0) | 2021.10.12 |
[ SpringBoot ] 02. Spring의 Autowiring과 Qualifer (0) | 2021.10.12 |
[ SpringBoot ] 01. Spring Bean의 LifeCycle (0) | 2021.10.12 |