본문 바로가기
스프링 부트3

스프링 부트 3와 Lombok 사용하기

by 굿센스굿 2024. 12. 4.
반응형

 

스프링 부트 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을 사용하여 코드의 간결함과 가독성을 모두 잡아보세요! 😊

반응형