Lombok 설정
Lombok 이란
Project Lombok은 클래스 자동화 라이브러리이다. 반복적으로 사용하는 코드들을 최소화시켜 가독성과 효율성을 올려준다.
Lombok 의존성 추가
maven central repository에서 lombok
을 검색한다.

최신 버전을 찾아 pom.xml에 추가한다.

STS에 Lombok 설치
프로젝트에만 추가하면 import나 annotation 등은 사용할 수 있지만 실제로 에디터에서 인지하지 못하기 때문에 오류가 발생한다. 따라서 STS와 같은 Eclipse에도 적용을 시켜야 완벽하게 사용할 수 있다.
이클립스를 종료한다.
maven으로 다운로드한 lombok jar파일의 위치를 찾는다.
[Window] → [Preferences] 선택
검색창에 "maven" 입력 후 [Maven] → [User Settings] 선택
Local Repository 란에 있는 저장소 위치 확인
저장소 내에서 /org/projectlombok/lombok 폴더로 이동하여 jar 파일 탐색
탐색한 jar 파일을 실행한다(더블클릭하거나 CMD에서 실행)
CMD에서 실행은 다음과 같이 한다.
$ java -jar "파일전체경로"
실행한 화면에서 [Specify location] 버튼을 눌러 STS 위치를 설정한 뒤 [Install/Update]를 누른다

설치 완료 화면이 나오면 이클립스를 시작한다.

Lombok 기능 사용
적용이 완료되었다면 기능을 만들어 테스트를 수행해본다.
샘플 클래스 생성
com.hakademy.spring09.entity.PersonDto
@Getter
@Setter
@NoArgsConstructor
@ToString
public class PersonDto {
private String name;
private int age;
}
Lombok은 멤버 필드만 존재한다면 나머지 구성 요소들을 Annotation으로 만들도록 지원해준다. 사용된 옵션들은 다음과 같다.
Getter
@Getter를 추가하면 해당하는 영역에 존재하는 필드에 Getter 메소드가 생성된다. 필드마다 사용할 수도 있고, 클래스에 사용할 수도 있다.
Setter
@Setter를 추가하면 해당하는 영역에 존재하는 필드에 Setter 메소드가 생성된다. 필드마다 사용할 수도 있고, 클래스에 사용할 수도 있다.
NoArgsConstructor
클래스에 사용할 수 있으며, 기본 생성자를 만들어준다.
AllArgsConstructor
클래스에 사용할 수 있으며, 모든 필드를 매개변수로 가지는 생성자를 만들어준다.
ToString
객체를 출력했을 때 나오는 toString() 메소드를 필드 값 출력 형태로 재정의한다. exclude 옵션을 사용하여 원하지 않는 항목은 출력되지 않도록 설정할 수 있다.
Data
@Getter, @Setter, @ToString 등은 거의 모든 클래스에 존재하므로 이를 압축하여 @Data라고 부를 수 있다. 따라서 위의 PersonDto는 다음과 같이도 만들 수 있다.
@Data
@NoArgsConstructor
public class PersonDto {
private String name;
private int age;
}
Mapping 생성
JUnit과 같은 테스트로 진행해도 되지만 아직 다루지 않았으므로 샘플 매핑을 통해 화면에 출력해본다.
com.hakademy.spring09.controller.TestController
@Controller
public class TestController {
@RequestMapping("/test")
@ResponseBody
public String test() {
PersonDto personDto = new PersonDto();
personDto.setName("test");
personDto.setAge(20);
return personDto.toString();
}
}
테스트
서버를 켜둔 뒤 다음 주소를 접속하여 정상적으로 수행되는지 확인한다.
http://localhost:8080/spring09/test
Lombok Builder 사용
Lombok의 Builder를 사용하면 객체를 좀 더 쉽게 생성할 수 있다.
PersonDto를 Builder가 사용 가능한 형태로 개조한다.
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class PersonDto {
private String name;
private int age;
}
Builder
빌더 패턴을 사용할 수 있도록 빌더 클래스를 지원하는 Annotation이다. @Builder는 다음과 같은 형태의 객체 생성을 지원한다.
PersonDto personDto = PersonDto.builder().build();
객체에 데이터를 설정하면서 생성하고 싶은 경우 변수명과 동일한 메소드를 builder가 지원한다.
PersonDto personDto = PersonDto.builder.name("test").age(20).build();
한 줄 형태로 작성이 될 수 있기 때문에 코드가 더 간결해지는 효과가 발생한다.
단, 모든 생성자가 잠금 처리되기 때문에 필요한 생성자는 명시적으로 작성하여야 한다
Mapping을 새로 만들어서 테스트를 수행한다.
@RequestMapping("/test-builder")
@ResponseBody
public String testBuilder() {
return PersonDto.builder().name("test").age(20).build().toString();
}
매핑 주소로 접속하여 정상적으로 수행되는지 확인한다
Last updated