스프링 부트 3는 빠르고 효율적인 애플리케이션 개발을 가능하게 하며, Lombok은 반복적인 코드를 줄이는 데 도움을 주는 필수 라이브러리입니다. 이 글에서는 Lombok을 스프링 부트 3 프로젝트에 적용하고 실무에서 활용할 수 있는 다양한 예제를 소개합니다.
1. Lombok이란?
Lombok은 자바 프로젝트에서 Getter, Setter, ToString, EqualsAndHashCode, Builder 등의 메서드를 어노테이션만으로 자동 생성해주는 라이브러리입니다.
- 장점:
- 코드 가독성과 유지 보수성 향상.
- 보일러플레이트 코드 제거로 개발 시간 절약.
- 단점:
- Lombok 의존성 제거 시 수정 작업 필요.
2. Lombok 설정하기
2-1. 의존성 추가
스프링 부트 3 프로젝트의 build.gradle 또는 pom.xml에 Lombok 의존성을 추가합니다.
build.gradle 예시:
dependencies {
implementation 'org.projectlombok:lombok:1.18.30'
annotationProcessor 'org.projectlombok:lombok:1.18.30'
}
pom.xml 예시:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
<scope>provided</scope>
</dependency>
2-2. IDE 설정
Lombok은 IDE의 플러그인이 필요합니다.
- IntelliJ: Settings > Plugins > Lombok Plugin 설치 후 재시작.
- Eclipse: Help > Eclipse Marketplace > Lombok 검색 및 설치.
3. Lombok 사용 예제
예제 1: 기본 어노테이션 사용
다음은 Lombok의 핵심 어노테이션을 사용하는 간단한 예제입니다.
package com.example.demo.model;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class User {
private int id;
private String name;
}
- @Getter: 모든 필드에 Getter 메서드 생성.
- @Setter: 모든 필드에 Setter 메서드 생성.
테스트 코드
User user = new User();
user.setId(1);
user.setName("Alice");
System.out.println(user.getName()); // 출력: Alice
예제 2: 생성자 자동 생성
Lombok은 다양한 생성자를 쉽게 정의할 수 있도록 도와줍니다.
package com.example.demo.model;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
public class Product {
private int id;
private final String name; // RequiredArgsConstructor에 포함
private double price;
}
- @NoArgsConstructor: 기본 생성자 생성.
- @AllArgsConstructor: 모든 필드 초기화 생성자 생성.
- @RequiredArgsConstructor: final 필드 또는 @NonNull 필드만 포함하는 생성자 생성.
예제 3: @Builder로 객체 생성
@Builder는 빌더 패턴으로 객체를 생성할 수 있도록 도와줍니다.
package com.example.demo.model;
import lombok.Builder;
@Builder
public class Order {
private int orderId;
private String productName;
private int quantity;
}
빌더 패턴 사용:
Order order = Order.builder()
.orderId(1001)
.productName("Laptop")
.quantity(2)
.build();
System.out.println(order);
예제 4: @Data로 통합 사용
@Data는 @Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor를 포함하는 통합 어노테이션입니다.
package com.example.demo.model;
import lombok.Data;
@Data
public class Customer {
private int customerId;
private String customerName;
}
예제 5: @Slf4j로 로깅 사용
Lombok은 로깅을 위한 어노테이션도 제공합니다.
package com.example.demo.service;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class UserService {
public void processUser() {
log.info("Processing user data...");
log.debug("Debugging user process.");
}
}
- @Slf4j: 로그 객체를 자동으로 생성.
- 로그 메시지는 프로젝트 설정에 따라 출력됩니다.
4. Lombok과 스프링 부트 통합 예제
다음은 스프링 부트 3와 Lombok을 활용한 REST API 예제입니다.
모델 정의
package com.example.demo.model;
import lombok.Data;
@Data
public class Item {
private int id;
private String name;
private double price;
}
컨트롤러 작성
package com.example.demo.controller;
import com.example.demo.model.Item;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/items")
public class ItemController {
@PostMapping
public Item createItem(@RequestBody Item item) {
item.setId(1); // ID 예시 할당
return item;
}
@GetMapping("/{id}")
public Item getItem(@PathVariable int id) {
return new Item(id, "Sample Item", 9.99);
}
}
5. 결론
Lombok은 스프링 부트 3와 함께 사용할 때 생산성을 크게 높여주는 강력한 도구입니다. 반복적인 코드를 제거하여 개발자가 비즈니스 로직에 집중할 수 있도록 도와줍니다.
Lombok을 사용하여 코드의 간결함과 가독성을 모두 잡아보세요! 😊
'스프링 부트3' 카테고리의 다른 글
스프링 부트 3에서 CORS 설정하기: 올바른 API 접근 관리 방법 (0) | 2024.12.04 |
---|---|
스프링 부트 3의 글로벌 예외 처리 (0) | 2024.12.04 |
Spring Boot: Maven과 Gradle의 차이 (0) | 2024.12.04 |
스프링 부트 3의 애플리케이션 프로파일 관리 (1) | 2024.12.04 |
스프링 부트 3의 AOP 기본 사용법 (1) | 2024.12.04 |