Springboot

Spring boot Static 필드에 @Value 사용

25G 2023. 8. 16. 19:21

Static 필드에 @Value 사용

Static 필드에 @Value 값은 바인딩 될 수 없습니다. 정확한 이유는 잘 모르지만 제 생각엔 java에서 가장 먼저 jvm 이 가장 먼저 메모리에 띄우는 것들이 static 인데 메모리에 이미 올라간 상태로 @Value 로 바인딩하려니 안되는 것 같습니다. 쉽게 말해 메모리에 올라가는 순서 때문에 발생한 문제인것 같습니다. ( 정확한 이유는 좀 더 공부를 해 봐야겠습니다)

해결

방법은 간단합니다. setter로 바인딩 해주면 그만입니다.

@Component
public class EncryptionUtil {

    public static String key;

    @Value("${enc.key}"})
    public void setKey(String value) {
        key = value;
    }

}