회사에서 개발 중
스프링의 @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
'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 |
댓글