본문 바로가기
ERROR FIX

@Value가 null 값으로 들어올때

by ppirae 2024. 1. 15.

회사에서 개발 중

스프링의 @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

https://jkpark.me/springboot/java/2020/06/04/Spring-Boot-static-%EB%B3%80%EC%88%98%EC%97%90%EC%84%9C-@value-annontation-%EC%82%AC%EC%9A%A9.html

 

Spring Boot - static 변수에서 @Value Annotation 사용

Spring Boot에서는 초기화 과정에서 컴포넌트를 주입할 때, 어플리케이션에 대한 Key/Value 형태의 설정을 클래스 내 변수에 값을 넣어주는 @Value Annotation이 존재한다. 이러한 설정은 application.properties

jkpark.me

 

댓글