본문 바로가기

Java/Java

Lombok - 롬복




자바를 바탕으로 한 프로젝트를 하다 보면, 수많은 Bean 클래스를 만들게 됩니다.


그리고 모든 Bean 클래스에 들어가는 똑같은 형식의 코드를 작성하게 됩니다.


예를 들자면, 대략 아래와 같은 경우입니다.

public class Member {
    private Long memberId;
    private String memberName;
    private String memberAddress;

    public Member() {
    }

    public Member(Long memberId, String memberName, String memberAddress) {
        this.memberId = memberId;
        this.memberName = memberName;
        this.memberAddress = memberAddress;
    }

    public Long getMemberId() {
        return memberId;
    }

    public void setMemberId(Long memberId) {
        this.memberId = memberId;
    }

    public String getMemberName() {
        return memberName;
    }

    public void setMemberName(String memberName) {
        this.memberName = memberName;
    }

    public String getMemberAddress() {
        return memberAddress;
    }

    public void setMemberAddress(String memberAddress) {
        this.memberAddress = memberAddress;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Member member = (Member) o;

        if (memberId != null ? !memberId.equals(member.memberId) : member.memberId != null) return false;
        if (memberName != null ? !memberName.equals(member.memberName) : member.memberName != null) return false;
        return memberAddress != null ? memberAddress.equals(member.memberAddress) : member.memberAddress == null;

    }

    @Override
    public int hashCode() {
        int result = memberId != null ? memberId.hashCode() : 0;
        result = 31 * result + (memberName != null ? memberName.hashCode() : 0);
        result = 31 * result + (memberAddress != null ? memberAddress.hashCode() : 0);
        return result;
    }
}


생성자와 Getter와 Setter 그리고 equals와 hasCode.. toString 입니다.


물론, IDE가 많이 좋아져서 자동으로 생성도 해주긴 합니다만..


소스도 보기 불편해지고, 여러모로 좋지 않습니다.


이때, Lombok을 사용하면, 아래와 같이 소스를 간결하게 고칠 수 있습니다.


@Data
@NoArgsConstructor
@AllArgsConstructor
@Getter @Setter
@EqualsAndHashCode
@ToString
public class Member {
    private Long memberId;
    private String memberName;
    private String memberAddress;
}


Lombok이 property를 감지하여서, 각 어노테이션에 따라서 컴파일시, 자동으로 해당 메서드를 자동으로 추가해줍니다.

자세한 내용은, 아래 Lombok의 홈페이지를 참고하세요.


https://projectlombok.org/

https://projectlombok.org/features/index.html