JWT를 공부하고 구현하는 과정에서, JWT의 Secret key 값을 받아와야하는 상황이 생겼다.
해당 어노테이션을 사용하기 위해서 import 해주는 과정에서, 자동완성 import로 lombok에서 제공하는 @Value 어노테이션을 사용하자 값을 받아오지 못하는 오류가 발생했다.
lombok에서 제공하는 @Value
import lombok.Value;
jwt에서 사용하는 @Value
import org.springframework.beans.factory.annotation.Value;
이 두 어노테이션의 차이는 무엇일까?
lombok.Value는 lombok에서 제공하는 어노테이션으로 불변한 클래스를 만들기 위한 어노테이션
[ 특징 ]
[ 왜 사용할까? ]
[ 예시 코드 ]
import lombok.Value;
@Value
public class User{
String name;
int age;
}
등을 자동으로 생성한다.
annotation.Value는 Spring Framework에서 제공하는 어노테이션으로, 설정 값 또는 환경 변수 값을 주입하기 위해 사용됨
[ 특징 ]
[ 사용하는 이유 ]
1. 외부 설정 값을 유연하게 주입하기 위해서
2. 환경에 따다 각 다른 값을 주입하거나 설정을 외부화하여 코드와 설정을 분리하기 위해 사용함
[ 예시 코드 ]
import org.springframework.beans.factory.annotation.Value;
import org.springframework.beans.stereotype.Component;
@Component
public class AppConfig{
@Value("${jwt.secret}")
private String secretKey;
}
# application.yml
jwt:
secret: abcdefghijklmnop
application.yml 파일에 해당 secret key 값이 작성되어있어야 사용할 수 있음
-> 객체를 불변하게 만들 때 사용한다. 주로 데이터 클래스나 DTO, Entity 정의 시 사용
-> 외부 설정 값을 주입할 때 사용 됨.