꾸준한 개발일기

Lombok과 @RequiredArgsConstructor란? 본문

Programing/스프링

Lombok과 @RequiredArgsConstructor란?

꾸개일 2025. 3. 25. 07:30
반응형

 

 

Lombok이란?

  • Lombok은 자바 코드에서 보일러플레이트(boilerplate) 코드를 줄여주는 라이브러리로 Getter, Setter, toString, 생성자 등을 자동으로 생성함
  • 코드를 더 간결하게 만들고 유지보수를 쉽게 할 수 있도록 도와줌

@RequiredArgsConstructor란?

@RequiredArgsConstructor는 final이 붙은 필드나 @NonNull이 붙은 필드를 매개변수로 받는 생성자를 자동으로 생성.
즉, 필수 필드만 받는 생성자를 만들 때 사용

사용 예시

import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
public class MemberService {
    private final MemberRepository memberRepository; // 생성자 자동 생성됨
}

위 코드에서 @RequiredArgsConstructor가 자동으로 아래와 같은 생성자를 만들어 줌.

public MemberService(MemberRepository memberRepository) {
    this.memberRepository = memberRepository;
}

@RequiredArgsConstructor를 사용하는 이유

  1. 생성자 코드를 직접 작성할 필요가 없음 → 코드 간결화
  2. 불변성 유지
    • final 필드를 선언하면 생성자를 통해 반드시 값을 설정해야 함 → NullPointerException 방지
  3. DI(의존성 주입) 편리
    • Spring에서 @Autowired 없이 생성자 주입을 쉽게 사용 가능

@RequiredArgsConstructor vs @AllArgsConstructor vs @NoArgsConstructor

어노테이션 생성자 타입 설명
@RequiredArgsConstructor 필수 필드(final, @NonNull 필드) 가장 많이 사용됨
@AllArgsConstructor 모든 필드 포함 전체 필드를 받는 생성자 생성
@NoArgsConstructor 기본 생성자 파라미터 없는 생성자 생성
@RequiredArgsConstructor // final 필드만 포함
@AllArgsConstructor // 모든 필드 포함
@NoArgsConstructor // 기본 생성자
public class MemberService {
    private final MemberRepository memberRepository;
    private String name;
}

결론

  • @RequiredArgsConstructor는 필수 필드만 받는 생성자를 자동으로 만듦
  • Spring과 함께 사용할 때 유용하며, @Autowired 없이 생성자 주입 가능
  • @AllArgsConstructor, @NoArgsConstructor와 비교하여 불필요한 생성자 생성 방지

 

반응형
Comments