본문 바로가기
프로그래밍/Spring

@Data, Lombok 어노테이션

by Mr-후 2019. 4. 8.
반응형

@Data, Lombok 어노테이션


예전에 스프링 배치 관련 프로젝트 자료를 읽고 따라 해보다가 롬복(Lombok)이라는걸 설치했었는데 그 때 잘? 몰랐던 내용인데 이제 보니 정확하고 명확하게 알겠다 싶어 정리를 해서 올려 둔다. 


2019/01/16 - [Programming/Java & Spring] - STS(Spring Tool Suite) 또는 이클립스에서 lombok 설정 (macOS기준)

Lombok 설치 관련해서는 위의 URL에서 자세하게 다루고 있다. (맥용) 


오늘은 DTO나, VO같은 클래스를 하나 만들고 @Data 어노테이션을 붙혔을 때 불필요한 코드를 줄이는 것에 대해서 간단하게 정리한다. 

@Data는 롬복의 어노테이션이다. 

@Data애너테이션을 붙이면 컴파일(*.class 파일 생성)할 때 각 필듸 세터(setter) / 게터(getter)와 toString(), equals(), hashCode() 메서드가 생성되므로 소스 코드가 간결해진다. 


pom.xml 롬복 의존 추가 

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->

<dependency>

    <groupId>org.projectlombok</groupId>

    <artifactId>lombok</artifactId>

    <version>1.18.6</version>

    <scope>provided</scope>

</dependency>


Argument클래스 
package com.example.app; 

import lombok.Data; 
import lombok.RequiredArgsConstructor; 

@Data
@RequiredArgsConstructor
public class Argument {
private final int a; 
private final int b; 

/**
* 롬복 사용하지 않을 경우 
*/ 
private void setA(int aValue) {
a = aValue; 
}

private int getA() {
return a; 
}
/**
* 와 같이 막 뭘 추가해주어야 하는데.. 그걸 다 해준다는 말임. 
*/ 
}


private final int a; 

final 제어자가 붙은 필드를 포함하는 경우 세터는 생성되지 않고 a를 인자로 받는 생성자 함수가 생성된다. 


반응형