@Value가 null 값으로 들어올때
회사에서 개발 중
스프링의 @Value 어노테이션으로 property에 저장된 값을 가져오려고 했다.
그러나 null pointer Exception이 발생하면서
해당 저장 값을 가져오지 못하고 있었다.
원인은
스프링은 static 필드에 @Value 를 지원하지 않기 때문이다.
static 필드는 jvm 클래스 로더에 의해 Class Area(=Static, Method)에 런타임에 저장된다.
이 시점은 스프링 컨테이너인 ApplicationContext가 로드되기 전이므로,
static 필드는 ApplicationContext에 의존적인 @Value가 동작하지 않는다고 한다. (@Autowired도 동일)
해결방법
setter 수정자 메서드를 사용하여
static 변수에 property 값을 주입할 수 있다.
참고)
https://chunsubyeong.tistory.com/130
static 필드에 @Value가 동작하지 않는 이유
◈ 목차 @Value이란? 에러 발생 과정 발생 에러 원인 (static 필드에 @Value가 동작하지 않는 이유) 해결 방법 # @Value이란? @Value는 Spring 애노테이션으로, 설정 파일 또는 환경 변수의 값(value)를 스프링
chunsubyeong.tistory.com
Spring Boot - static 변수에서 @Value Annotation 사용
Spring Boot에서는 초기화 과정에서 컴포넌트를 주입할 때, 어플리케이션에 대한 Key/Value 형태의 설정을 클래스 내 변수에 값을 넣어주는 @Value Annotation이 존재한다. 이러한 설정은 application.properties
jkpark.me