[Spring] 롬복(Lombok) 라이브러리

2024. 10. 30. 00:04·Spring

롬복 ?

롬복(Lombok) 라이브러리는 자바에서 보일러플레이트 코드를 줄여주기 위해 사용하는 유용한 도구다.

이를 통해 코드가 간결해지고, 가독성도 높아진다.

여기서 보일러 플레이트 코드란, 소프트웨어 개발에서 반복적으로 사용되는 일관된 패턴의 코드나 템플릿을 말한다.

일반적으로 특정 작업을 수행할 때 필요하지만, 핵심 로직 자체에는 큰 영향을 미치지 않는 코드이다.

자주 사용되는 코드로 인해 개발 초기 단계에서 시간과 노력을 절약할 수 있다.

롬복을 사용하면 클래스에 자주 사용하는 getter, setter, toString, equals, hashCode 메서드를 자동으로 생성할 수 있다. ★★ 

예시로 @Getter, @Setter 어노테이션을 클래스나 필드에 붙이면 해당 필드에 대한 getter와 setter 메서드가 자동으로 추가된다. 코드를 길게 작성할 필요 없이 간단하게 어노테이션 하나로 처리할 수 있어서 매우 편리하다.

 

의존성 추가

롬복을 활용하려면 먼저 프로젝트에 라이브러리를 추가해야 한다. Maven의 경우 pom.xml 파일에 롬복 의존성을 추가한다.

<!--롬복 라이브러리 추가-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>

라이브러리를 추가하면 코드에 다양한 어노테이션을 적용할 수 있다.

 

사용 예시

@Getter, @Setter, @ToString

아래는 롬복 라이브러리를 통해 적용한 어노테이션 예시 코드이다.

package com.coma.app.biz.grade;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@ToString
public class GradeDTO {
	private int grade_num;		     // 등급별 PK
	private String grade_profile;   // 등급 이미지 URL
	private String grade_name;     // 등급에 대한 이름
	private int grade_min_point;   // 최소 등급
	private int grade_max_point;   // 최대 등급

}

 

이러면 위 멤버변수들에 대한 Getter & Setter & ToString 메서드가 자동으로 추가된다.

 

@Slf4j

@Slf4j를 붙이면 롬복이 클래스 안에 log라는 이름의 org.slf4j.Logger 타입 객체를 자동으로 생성해 준다.

이렇게 생성된 log 객체를 통해 info, debug, error 등 SLF4J 로깅 레벨을 사용할 수 있다.

여기서 로깅이란, 프로그램이 실행되면서 발생하는 이벤트나 데이터, 상태 정보를 기록하는 작업을 말한다. 이를 통해 애플리케이션이 어떻게 작동하는지 파악하고, 예상치 못한 문제가 발생했을 때 원인을 추적할 수 있다.

 

@Slf4j  특히 Spring Boot나 Spring MVC 같은 프레임워크 기반 프로젝트에서 많이 쓰이며, 개발자들이 시스템 상태를 모니터링하거나 오류를 쉽게 찾을 수 있도록 돕는 역할을 한다. 

 

사용 예시

log.info("UserManagementController datas {} " , datas);

 

 

@Slf4j  vs system.out.println()

기존에는 System.out.println(줄여서 syso)을 통해 로그를 찍었지만, @Slf4j 를 사용하는게 훨씬 더 좋다.

syso와 log의 차이는 단순히 콘솔에 출력하는 것을 넘어, 코드의 유지 보수와 성능에 큰 영향을 미친다.

 

@Slf4j 사용이 더 나은 이유

 

→ 로그 레벨 관리: @Slf4j로 만든 log 객체는 다양한 로그 레벨을 제공한다 (info, debug, warn, error 등). 여기서 로그레벨이란 로그 메시지의 중요도나 심각성을 나타낸다. ( ERROR - WARN - INFO - DEBUG - TRACE )

이로 인해, 필요에 따라 출력 수준을 조절할 수 있어 불필요한 로그는 숨기고 중요한 정보만 확인할 수 있다.

예를 들어, 개발 환경에서는 debug 레벨을 활성화하고, 운영 환경에서는 info 또는 error 수준만 표시할 수 있다.

 

→  퍼포먼스 향상: System.out.println은 동기화된 I/O 작업으로 인해 속도가 느리고, 특히 많은 양의 로그를 출력할 때 성능에 영향을 미칠 수 있다. 반면 @Slf4j는 로깅 프레임워크가 자체 버퍼링을 사용하여 성능을 최적화한다.

 

→  유지 보수: @Slf4j를 사용하면 나중에 로깅 설정을 변경하기 쉽다. 예를 들어, 로그 파일을 특정 형식으로 저장하거나, 외부 모니터링 시스템과 연결할 수 있다. 반면, syso는 콘솔에 단순 출력만 하므로 별도의 관리가 어렵다.

 

→  추적 정보: log를 사용하면 출력 시점의 클래스 이름, 메서드, 라인 번호 등의 정보가 포함되어 디버깅에 유리하다. syso는 수동으로 이러한 정보를 추가해야 해서 관리가 어렵다.

 

→  유연한 출력 옵션: @Slf4j는 로그 파일에 기록하거나 특정 형식으로 출력할 수 있으며, 이는 시스템 모니터링과 같은 다양한 목적에 활용할 수 있다.

 

개발 단계에서는 syso가 편하게 느껴질 수 있지만, 실제 프로젝트나 유지 보수가 필요한 코드에서는 @Slf4j가 훨씬 효율적이다. 로깅 설정만으로 원하는 수준의 로그를 제어할 수 있고, 시스템 성능을 최적화하면서도 문제 추적에 유리하기 때문이다.

 

 

 

 

유용하게 잘 써먹도록 하자..

 

 

 

 

'Spring' 카테고리의 다른 글

[Spring] AOP  (0) 2024.11.10
[Spring] 횡단 로직 - AOP를 활용한 로그인 체크 기능 구현하기  (0) 2024.10.28
[Spring] 쿠키 활용하기 - 자동 로그인  (0) 2024.10.25
[Spring] Multipart & 파일 업로드  (1) 2024.10.23
[Spring] 커스텀 어노테이션  (1) 2024.10.23
'Spring' 카테고리의 다른 글
  • [Spring] AOP
  • [Spring] 횡단 로직 - AOP를 활용한 로그인 체크 기능 구현하기
  • [Spring] 쿠키 활용하기 - 자동 로그인
  • [Spring] Multipart & 파일 업로드
yn98
yn98
좌우명 : 여전할 것 인가, 역전할 것 인가? 백엔드 개발자가 되고싶은 역전하고 있는 개발자 꿈나무의 블로그입니다. 개발을 하면서 공부한 것들을 기록합니다. 24.06 ~
  • yn98
    개발 꿈나무
    yn98
  • 전체
    오늘
    어제
    • 분류 전체보기 (131)
      • Python (3)
      • 공부 (7)
      • DB (7)
      • JAVA (24)
      • JSP (9)
      • jQuery (2)
      • HTML (3)
      • Spring (20)
      • 웹 (4)
      • C (1)
      • Git (2)
      • 에러일기 (19)
      • 프로젝트 (6)
      • 책 (21)
        • 멘토씨리즈 자바 (14)
        • 2024 수제비 정보처리기사 (7)
      • 기타 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
    • Notion
  • 공지사항

  • 인기 글

  • 태그

    2-layered 아키텍처
    recoverabledataaccessexception
    스프링 프레임워크
    오버로딩
    티스토리챌린지
    Di
    정처기 실기
    aop
    java
    정보처리기사
    @Component
    생성자
    객체지향
    codeup 4891 : 행복
    정보처리기사 실기
    DispatcherServlet
    MVC
    이벤트 스케줄러
    수제비
    html
    오블완
    ViewResolver
    Spring
    멘토씨리즈 자바
    정처기
    jsp
    @service
    어노테이션
    @repository
    상속
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
yn98
[Spring] 롬복(Lombok) 라이브러리
상단으로

티스토리툴바