lombok 롬복
@Data
- @Data 가 생성하는 코드
- @ToString
- @EqualsAndHashCode
- @Getter : 모든 필드
- @Setter : 정적 필드가 아닌 모든 필드
- @RequiredArgsConstructor
@Getter / @Setter
- 필드에 @Getter 나 @Setter 를 붙이면 기본 getter/setter 를 생성
- 기본 getter
- 필드를 리턴
- 메서드 이름 getFoo
- boolean 타입 isFoo
- 기본 setter
- 필드에 값을 설정
- 메서드 이름 setFoo
- 리턴 타입 void
- 필드와 같은 타입의 파라미터를 하나 가진다.
순수 자바 코드
public class LombokMember {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
롬복 코드
public class LombokMember {
@Getter
@Setter
private String name;
}
@Getter / @Setter 에서의 접근 제어자 설정
public class LombokMember {
@Getter
@Setter(AccessLevel.PRIVATE)
private String name;
}
- AccessLevel 을 명시하지 않으면 public 으로 지정
전체 필드에 적용
@Getter
public class LombokMember {
@Getter(AccessLevel.NONE)
private String name;
}
- 전체 필드에 적용 시키기 위해서는 클래스에 @Getter / @Setter 적용
- AccessLevel.NONE
- 특정 필드에서 @Getter / @Setter 생성을 막기 위해 사용
@NoArgsConstructor
@RequiredArgsConstructor
@AllArgsConstructor
@NoArgsConstructor
- 파라미터가 없는 생성자를 생성
- 필드들이 final 로 생성되어 있는 경우 필드를 초기화 할 수 없기 때문에 에러 발생
@RequiredArgsConstructor
- 추가 작업을 필요로 하는 필드에 대한 생성자를 생성하는 어노테이션
- 초기화 되지 않는 모든 final 필드
- @NonNull 인 모든 필드
- 생성자 내에 null-check 로직이 추가적으로 생성
@AllArgsConstructor
- 클래스에 존재하는 모든 필드에 대한 생성자를 자동으로 생성
- @NonNull 필드가 있다면 생성자 내에 null-check 로직 생성
생성자 어노테이션 주의사항
- static 필드는 스킵
- 파라미터 순서는 클래스에 있는 필드 순서에 맞춰서 생성
- AccessLevel 설정
Val
- 변수 선언시 타입을 명시적으로 선언하지 않고 표현식에서 타입을 추론하도록 설정
- 변수에 final 키워드 자동 적용
롬복 코드
val example = new ArrayList<String>();
순수 자바 코드
final ArrayList<String> example = new ArrayList<String>();
주의사항
- 메서드 파라미터와 클래스 변수로 사용 불가
- 특정 타입 적용 불가 가능성
Var
- final 이 적용되지 않는 val
- 처음 초기화 표현식에서만 타입 추론 기능 적용
- 초기화 값이 있는 지역변수로만 선언 가능
- Java 10 부터는 기본적으로 var 제공
@NonNull
- null-check 로직을 자동으로 생성해주는 어노테이션
- 생성자, 메서드 파라미터, 필드 사용가능
- lombok 이 생성한 메서드나 생성자에만 효과가 있다.
@ToString
@EqualsAndHashCode
- 자바 빈 equals / hashCode 메서드 자동 생성