포스트

Spring Boot - Lombok 설정으로 @Value 필드를 생성자에서 주입 받기

이렇게 설정하게 되면 Spring Boot가 @Value 필드의 자료형 (String, boolean, int, long 등)으로 bean을 찾게 되므로 사용하진 않을 것 같다.
다른 활용 방법이 생긴다면 참고할 수 있도록 기록을 남겨둠!




Service 코드의 테스트 작성 중 @Value 필드를 해결하지 못하는 문제가 발생했다.
@Value 필드를 생성자로 주입 받도록 설정하는 방법을 알게 되어 정리 ✏️




lombok 설정 파일 작성을 통해 @RequiredArgsConstructor 어노테이션 컴파일 시 @Value 필드를 포함시키는 방법


1. lombok.config 파일 작성

lombok.config 파일을 프로젝트 루트 위치에 생성하고 다음 코드를 추가한다.

1
   lombok.copyableAnnotations = org.springframework.beans.factory.annotation.Value

2. @Value 필드 수정

@Value 필드를 private final로 수정하고 소속된 클래스에 @RequiredArgsConstructor 어노테이션을 붙여준다.

1
2
3
4
5
6
7
8
9
10
11
@Slf4j  
@RequiredArgsConstructor  
@Service  
public class SessionUserService {  
    private final SessionUserRepository sessionUserRepository;  
    private final RedisTemplate<String, String> redisTemplate;  
      
    @Value("${sign-up.key.session}")   private final String KEY_SESSION_USER;  
    @Value("${sign-up.key.email}")      private final String KEY_EMAIL;  
    @Value("${sign-up.key.nickname}")   private final String KEY_NICKNAME;  
    @Value("${sign-up.session.expire}") private final long SESSION_EXPIRE_TIME;

3. build 된 class 파일 확인

프로젝트를 build 한 후에 생성된 class 파일을 확인해보면 생성자에서 @Value 값을 읽어오는 것을 확인 할 수 있다.

image




참고한 사이트

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.