[Spring] Lombok이란?
Lombok이란?
자바 개발 시, 자주 사용하는 Getter, Setter, 생성자 등을 자동으로 생성해주는 라이브러리이다.
@Getter, @Setter, @RequiredArgsConstructor 등의 어노테이션 방식을 이용한다.
기존 방식의 문제점
- 멤버 변수를 제어하기 위해 모델 객체마다 반복적으로 메소드들을 생성해야 한다.
- IDE에서 generate를 이용해서 편하게 생성할 수 있지만, 변수명이 바뀌면 다시 만들어야 한다.
-> Lombok을 사용하면 생성자, 접근자, 설정자, toString() 자동생성 라이브러리이므로 위와 같은 번거러움을 없앨 수 있고 이외에도 다양한 기능들을 쓸 수 있다.
장점
- 코드 작성이 쉽고 필요한 코드가 적어진다.
- 코드가 명시적이다.
- 수정이 간편해진다.
주로 사용하는 Lombok Annotation
접근자와 설정자(@Getter, @Setter)
접근자와 설정자를 자동 생성해준다. 멤버 변수 위에 선언해주면 된다. 클래스위에 선언할 시 전체적용이 된다.
@NoArgsConstructor
@Getter // <- 접근자
@Setter // <- 설정자
public class Person{
private String name;
private int age;
}
이런식으로 선언해주면 따로 Person class의 생성자와 설정자, 접근자를 선언해주지 않아도 된다!!
코드가 매우 보기 편해졌고 번거로움 또한 없어졌다.
생성자
클래스 위에 쓴다.
- @AllArgsConstructor : 모든 변수로 생성자 생성
- @RequiredArgsConstructor : final 키워드나 @NonNull 이 된 멤버변수로만 생성자 생성
- @NoArgsConstructor : 기본 생성자 생성
@NoArgsConstructor // <-생성자
@Getter
@Setter
public class Person{
private String name;
private int age;
}
ToString()
@ToString을 사용한다. @ToString(exclude = "password")처럼 특정 필드를 제외시킬 수도 있다.
@EqualsAndHashCode
객체 비교 등의 용도로 사용되는 equals(), hashCode() 메소드를 자동으로 생성해준다.
@Data
위에서 다룬 @Getter, @Setter, @RequiredArgsConstructor, @EqualsAndHashCode, @ToString 등을 한번에 해준다.
@NonNull
@NonNull : 변수 위에 사용한다. runtime 시에 Null 인지 아닌지 체크 하여 NullPointerException이 발생하도록 한다.