1. Lombok 적용

  •  Settings → Build, Execution, Deployment → Compiler → Annotation Processors
    • Enable annotation processing 체크

Enable annotation processiing를 체크한다.

 

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편 - 백엔드 웹 개발 핵심 기술』