회사에서 개발 중

스프링의 @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
'ERROR FIX' 카테고리의 다른 글
스프링 프로젝트 실행시 열리는 기본주소창 설정 (0) | 2024.03.14 |
---|---|
LifecycleException: 구성요소 [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]을(를) 시작하지 못했습니다 (0) | 2024.03.04 |
mvn compile, package, install 차이 (0) | 2023.11.18 |
Caused by: java.io.FileNotFoundException: class path resource 에러 (0) | 2023.11.11 |
스프링 CORS 처리 (+스프링 클라우드 게이트웨이) (1) | 2023.11.05 |
댓글