avatar
ㅇㅅㅇ

Lombok을 사용해보자

롬복 이해하기
JavaSpring
6 months ago
·
5 min read

Lombok 이란

Lombok은 자바 언어에서 반복적으로 작성해야하는 코드를 자동으로 생성해주는 라이브러리이다
예를 들면 dto작성할때.....Getter, Setter, Constructor, toString 등의 메소드를 자동으로 생성해서
개발자가 직접 작성하지 않아도 되도록 도와준다

Lombok을 사용하기 위해서는 라이브러리를 프로젝트에 추가해야한다

라이브러리 의존성 추가

Maven을 사용하는 경우

pom.xml 파일에 다음과 같은 의존성을 추가해준다.

<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.26</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

Gradle을 사용하는 경우

build.gradle 파일에 다음과 같은 의존성을 추가해준다.

dependencies {
compileOnly 'org.projectlombok:lombok:1.18.26'
annotationProcessor 'org.projectlombok:lombok:1.18.20'
}

근데 Lombok을 사용할 때 주의해야 할 점이 있는데

Lombok이 생성해주는 코드는 컴파일시 자동으로 생성되기 때문에 IDE에서는 확인이 안된다
따라서 Lombok을 사용할 때는 IDE에서 Lombok의 기능을 지원해주는 플러그인을 설치해주는게 좋음

Lombok 어노테이션 종류

Lombok에서 제공하는 어노테이션은 종류가 많은데
그중 주요 어노테이션은 아래와 같다

  • @Getter: Getter 메소드 생성

  • @Setter: Setter 메소드 생성

  • @ToString: toString 메소드 생성

  • @EqualsAndHashCode: equals, hashCode 메소드 생성

  • @Data: Getter, Setter, equals, hashCode, toString 메소드 생성

  • @AllArgsConstructor: 모든 필드(멤버변수)를 인자로 받는 생성자 생성

  • @NoArgsConstructor: 인자가 없는 "쌩" 기본 생성자 생성

  • @RequiredArgsConstructor: final 필드를 인자로 받는 생성자 생성

Lombok 사용 예시

@Data

의존성을 추가한 후, Lombok을 사용하고자 하는 클래스 상단에 @Data 어노테이션을 추가하면 자동으로 Getter, Setter, Constructor, toString 등이 생성된다

package com.project.test618.dto;
import lombok.Data;

@Data
public class MemberDTO {
String user_id;
String password;
String name;
String email;
int age;
}
package com.project.test618;
import com.project.test618.dto.MemberDTO;

public class MemberTest {
public static void main(String[] args) {

MemberDTO dto = new MemberDTO();
    dto.setUser_id("park1234");
    dto.setPassword("test1234");
    dto.setName("박아무개");
    dto.setEmail("park1234@email.com");
    dto.setAge(23);
}}

MemberDTO 에서 @Data 어노테이션을 사용한뒤
dto객체를 불러와 접근했을때 getter,setter를 직접 적지 않아도 사용이 가능한것을 확인했다

@Builder

@Builder 어노테이션을 사용하여 빌더 패턴을 쉽게 구현할 수 있다

// MemberDTO.java
package com.project.test618.dto;
import lombok.Builder;
import lombok.Data;

@Builder
@Data
public class MemberDTO {
String user_id;
String password;
String name;
String email;
int age;
}

@Builder 어노테이션을 사용하여 dto에서 빌더 패턴을 구현하였고
이제 빌더를 사용하여 객체를 생성할 수 있음

package com.project.test618;
import com.project.test618.dto.MemberDTO;

public class MemberTest {
public static void main(String[] args) {

MemberDTO dto = MemberDTO.builder()
.user_id("park1234")
.password("test1234")
.name("박아무개")
.build();
}
}

빌더 패턴을 사용하면 필요한 속성만 설정하여 객체를 만들수있음!!
그리고 사용될 속성이 많은 경우에 가독성이 좋아진다는 장점이 있다

@AllArgsConstructor,
@NoArgsConstructor

Lombok은 @AllArgsConstructor, @NoArgsConstructor 어노테이션을 제공하고 있다.

@AllArgsConstructor 어노테이션을 사용하면
모든 필드를 인자로 받는 생성자, 또는 인자가 없는 생성자를 자동으로 생성할 수 있다

package com.project.test618.dto;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor

public class MemberDTO {
String user_id;
String password;
String name;
String email;
int age;
}

위에서 @AllArgsConstructor ,@NoArgsConstructor 를 사용해서 만든 자바코드를
원래대로 풀어서 쓰면 아래처럼 되는것이다

package com.project.test618.dto;
public class MemberDTO {
String user_id;
String password;
String name;
String email;
int age;

public MemberDTO() {};
public MemberDTO(String user_id,String password, String name, String email, int age) {
this.user_id = user_id;
this.password = password;
this.name = name;
this.email = email;
this.age = age;
}}







야호