1. Lombok 적용
- Settings → Build, Execution, Deployment → Compiler → Annotation Processors
- Enable annotation processing 체크
2. @Getter, @Setter
- 클래스에 설정하면 선언된 변수들의 getter와 setter 메서드를 자동으로 생성해준다.
- 특정 변수에만 선택적으로 설정할 수도 있다.
@Getter
public class User {
private String id;
@Setter private String password;
}
3. @ToString
- toString() 메서드를 자동으로 생성해준다.
- exclude 속성으로, 특정 필드를 toString() 결과에서 제외시킬 수 있다.
@ToString(exclude = "password")
public class User {
private String id;
private String password;
}
4. @NonNull
- 반드시 값이 존재해야 한다.
- null 값일 경우 NullPointerException을 발생시킨다.
public class User {
@NonNull private String id;
private String password;
}
5. Constructor
- 생성자를 자동으로 만들어준다.
- AccessLevel을 통해 접근제한자를 설정할 수 있다.
종류 | 설명 |
@NoArgsConstructor | 파라미터가 없는 기본 생성자를 만들어준다. |
@AllArgsConstructor | 모든 필드 값을 파라미터로 받는 생성자를 만들어준다. |
@RequiredArgsConstructor | final 혹은 @NonNull 애노테이션이 설정된 필드 값만 파라미터로 받는 생성자를 만들어준다. |
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class User {
private String id;
private String password;
}
@RequiredArgsConstructor
public class Employee {
private final String id;
private final String name;
}
6. @EqualsAndHashCode
- equals(), hashCode() 메서드를 자동으로 생성해준다.
- equals(): 두 객체의 내용이 같은지 비교한다.
- hashCode(): 두 객체가 같은 객체인지 비교한다.
- exclude 속성으로, 특정 필드를 제외시킬 수 있다.
- callSuper 속성으로, equals(), hashCode() 메서드 자동 생성 시 부모 클래스 필드까지 감안할지 설정할 수 있다. 기본값은 false이다.
@EqualsAndHashCode(callSuper = true)
public class User extends ParantsUser {
private String id;
private String password;
}
7. @Builder
- 빌더 패턴을 사용할 수 있게 해준다.
@Builder
public class User {
private String id;
private String password;
}
/**
User user = User.builder()
.id("userId001")
.password("1234asdf")
.build();
**/
8. @Syncronized
- 메서드에서 동기화 설정을 한다.
9. @Slf4j
- 로그를 남길 수 있게 해준다.
10. @Data
- @Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode를 모두 포함하는 애노테이션이다.
참고
- https://ksshlee.github.io/spring/java/lombok/
- 『스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술』
'Spring' 카테고리의 다른 글
Bean LifeCycle & Callback (0) | 2021.10.11 |
---|---|
의존관계 주입 시 bean이 2개 이상일 때 해결 방법 (0) | 2021.10.11 |
다양한 의존관계 주입 방법 (0) | 2021.10.11 |
Spring container에 bean을 등록하는 2가지 방법 (0) | 2021.10.09 |
IoC, DI, Bean, Container (0) | 2021.10.08 |