Spring/Lombok
롬복(Lombok), @AllArgsConstructor @NoArgsConstructor @RequiredArgsConstructor
JWonK
2022. 4. 28. 16:51
728x90
반응형
▶ 롬복(Lombok)
롬복(Lombok)은 Java 라이브러리로 반복되는 getter, setter, toString 등의 메서드 작성 코드를 줄여주는 코드 다이어트 라이브러리이다. 반복되는 getter, setter, 생성자의 작성은 코드의 가독을 저해시키고, 번거로운 작업이 될 수 있다. 이는 전체 코드가 복잡해지는 현상을 유발한다.
Lombok은 여러가지 어노테이션을 제공하고 이를 기반으로 코드를 컴파일과정에서 생성해주는 방식으로 동작하는 라이브러리이다. 즉 코딩과정에서는 롬복과 관련된 어노테이션만 보이고 getter와 setter 메서드 등은 보이지 않지만 실제로 컴파일된 결과물에는 코드가 생성되어있다.
간단한 예시 코드로 롬복의 편리함을 확인할 수 있다.
순수 Java 코드
public class Member {
private String name;
private Long id;
private Long age;
private Long height;
private Long weight;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getAge() {
return age;
}
public void setAge(Long age) {
this.age = age;
}
public Long getHeight() {
return height;
}
public void setHeight(Long height) {
this.height = height;
}
public Long getWeight() {
return weight;
}
public void setWeight(Long weight) {
this.weight = weight;
}
}
-> 모든 필드값에 대한 getter와 setter만으로도 코드가 상당히 길다.
롬복을 적용한 코드
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Member {
private String name;
private Long id;
private Long age;
private Long height;
private Long weight;
}
-> 위 코드와 같은 기능을 하지만 상당히 코드가 간결해졌다.
위처럼 같은 기능을 하는 코드이더라도 롬복기능을 활용하면 매우 간결한 코드를 작성할 수 있다.
▶ @AllArgsConstructor @NoArgsConstructor @RequiredArgsConstructor
@AllArgsArgsConstructor | @RequiredArgsConstructor | @NoArgsConstructor | |
기능 | 모든 필드 값을 파라미터로 받는 생성자를 만든다. | final이나 @NonNull인 필드 값만 파라미터로 받는 생성자를 만든다. | 파라미터가 없는 기본 생성자를 만든다. |
Example)
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
public class Member {
private Long id;
@NonNull
private String name;
@NonNull
private String password;
private String address;
}
Member member1 = new Member(); // -> @NoArgsConstructor
Member member2 = new Member("홍길동", "12345"); // -> @RequiredArgsConstructor
Member member3 = new Member(1L, "이순신", "거북선", "한양 어느 집"); // -> @AllArgsConstructor
728x90
반응형