Lombok은 자바 개발자들이 코드에서 반복적으로 작성해야 하는 보일러플레이트 코드(중복된, 반복적인 코드)를 줄이고 간결하게 만들어주는 라이브러리임.
Lombok은 클래스나 메서드의 구조를 정의할 때 어노테이션을 사용하여 코드를 자동으로 생성하도록 도와줌.
@Data:
@Getter / @Setter:
@Getter
또는 @Setter
를 사용하여 설정할 수도 있습니다.@NoArgsConstructor / @AllArgsConstructor:
@NoArgsConstructor
)와 모든 필드를 매개변수로 받는 생성자(@AllArgsConstructor
)를 생성합니다.@ToString:
toString()
메서드를 자동으로 생성하여 객체의 필드 값을 문자열로 출력해줍니다.@EqualsAndHashCode:
equals()
와 hashCode()
메서드를 자동으로 생성해줍니다.@Builder:
@Value:
@Data
와 유사하게 Getter, equals()
, hashCode()
, toString()
등을 생성하지만, 불변(immutable)한 객체를 생성합니다.@Slf4j:
로깅을 위한 Slf4j 라이브러리의 Logger 객체를 자동으로 생성합니다.
private static final Logger log = LoggerFactory.getLogger(ClassName.class);
와 같은 코드를 대신합니다.
log라는 단어 자동생성해줌.
사용하려는 엔티티나 객체에 붙히면 자동으로 builder 패턴을 사용 할 수 있도록 도와줌
Builder 패턴 직접구현
public class Person {
private String firstName;
private String lastName;
private int age;
private Person(Builder builder) {
this.firstName = builder.firstName;
this.lastName = builder.lastName;
this.age = builder.age;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public int getAge() {
return age;
}
public static class Builder {
private String firstName;
private String lastName;
private int age;
public Builder firstName(String firstName) {
this.firstName = firstName;
return this;
}
public Builder lastName(String lastName) {
this.lastName = lastName;
return this;
}
public Builder age(int age) {
this.age = age;
return this;
}
public Person build() {
return new Person(this);
}
}
}
public class Main {
public static void main(String[] args) {
Person person = new Person.Builder()
.firstName("John")
.lastName("Doe")
.age(30)
.build();
System.out.println("First Name: " + person.getFirstName());
System.out.println("Last Name: " + person.getLastName());
System.out.println("Age: " + person.getAge());
}
}