프로그래밍/Java

[Spring, Spring Boot] @Value가 null일 때의 원인과 해결 방법

차나니 2024. 6. 17. 19:44

@Value란 ?

먼저 @Value 어노테이션의 경우 DB접속 정보나 비밀번호, secretKey와 같이 민감한 정보를 별도의 파일로 분리해서 환경 정보에 맞는 값을 불러오도록 하는 어노테이션입니다. application.properties 또는 application.yml에 값을 설정하면 필드나 메서드에 값을 주입해줄 수 있습니다 !

 

null을 반환할 때의 원인

@Value 어노테이션이 property의 값을 받아오지 못하는 경우는 크게 네 가지가 있습니다 !

 

properties 이름을 잘못 입력했을 경우

@Valse("${aws.secret-kee}")

상단의 코드와 같이 properties에 등록한 이름과 다를 경우 null값을 반환합니다.

 

Bean으로 등록되지 않은 경우

클래스를 Bean(@Component, @Service, @Controller)으로 등록하지 않으면 Spring이 의존성 주입을 할 수 없습니다.

 

static 변수로 받은 경우

@Value의 값은 static 변수로 받을 수 없습니다.

 

외부에서 해당 클래스를 new로 생성했을 경우

@Value 어노테이션은 Spring Context에 의존하기 때문에 해당 클래스가 Spring Bean으로 등록되어 있지 않으면 @Value 값은 null을 반환합니다.