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;
		
		// getter
		public String getName() {
				return name;
		}
		
		// setter
		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

  • toString 메서드 생성

@EqualsAndHashCode

  • 자바 빈 equals / hashCode 메서드 자동 생성
profile
🧑🏻‍💻 Hello World!

0개의 댓글