[Spring] Lombok (final)

Jisu_M·2024년 11월 20일

Spring 개발에서 @RequiredArgsConstructor는 매우 자주 사용되는 Lombok 어노테이션 중 하나다. 특히, 의존성 주입 시 활용도가 높으며, 코드의 간결성과 안정성을 동시에 제공한다.

@RequiredArgsConstructor란?

Lombok의 @RequiredArgsConstructor는 클래스의 final 또는 @NonNull 필드를 초기화하는 생성자를 자동으로 생성해주는 어노테이션이다.

  • 주요 역할
  1. 명시적으로 작성해야 하는 생성자 코드를 자동으로 대체.
  2. 의존성 주입 시 필요한 생성자를 간결하게 제공.

사용 예시

@RequiredArgsConstructor
public class MyService {
    private final MyRepository myRepository;
}

위 코드는 다음과 같은 생성자를 자동으로 생성한다.

public MyService(MyRepository myRepository) {
    this.myRepository = myRepository;
}

이때 @RequiredArgsConstructor 사용하기 위해서는 필수 의존성 필드에 반드시 final 키워드를 붙여야 한다.

왜 final을 붙여야 할까?

1️⃣ 불변성(Immutable) 보장

final 키워드는 필드 값을 변경할 수 없도록 강제한다.

의존성 주입 후 해당 의존성이 변경되지 않음을 보장하며, 이로 인해 안정성이 높아지며
특히, 멀티스레드 환경에서 객체의 상태가 의도치 않게 변경되는 문제를 방지할 수 있다.

2️⃣ 의존성 주입 강제

final 키워드는 해당 필드가 반드시 생성자에서 초기화되도록 강제한다.
이로 인해, 의존성 주입이 누락된 경우 컴파일 에러가 발생한다.

@RequiredArgsConstructor
public class MyService {
    private final MyRepository myRepository;
    private final AnotherDependency anotherDependency;
}

// 생성자 주입 누락
MyService myService = new MyService(new MyRepository()); 
// 컴파일 에러 발생!
profile
개발 여정을 기록하며 성장하는 매일

0개의 댓글