app-key와 app-secret을 application.properties 파일에 key, value 형태로 담아둔 후, 콘솔창에서 확인하기 위해 다음과 같은 시도를 했다.
1. new로 객체 생성 후, 값 가져오기
로직은 위와 같고, 실행 결과는 다음과 같았다.
모두 null 값으로 불러진 것을 확인했다.
테스트 코드로 값을 불러온 결과에서는 application.properties에서의 값들을 정상적으로 받아오는 걸 확인했고, 그렇다면 @Value 애너테이션이나 기타 파일의 코드는 문제가 없다는 걸 알 수 있었다.
2. 필드 변수를 static으로 선언해서 값 가져오기
이번에는 객체를 생성하지 않고, 필드 변수 그대로 받아와서 값을 출력해보았다.
결과는 다음과 같았다.
동일하게 두 변수 모두 null 값이 출력되었다.
두 시도 각각 null 값이 출력된 이유는 다음과 같다.
1. new 키워드로 새 객체를 생성해서 값을 받아오는 경우
→ new 키워드로 새 객체를 생성하게 되면 즉, 수동으로 인스턴스화가 되면 Spring이 내부적으로 관여하지 않기 때문에 @Value 애너테이션이 무시된다.
- https://stackoverflow.com/questions/4130486/spring-value-annotation-always-evaluating-as-null
2. static 변수로 선언한 후, 값을 받아오는 경우
→ static 즉, 정적 변수로 선언된 변수에는 Injection을 할 수 없기에 @Value 애너테이션이 무시된다.
- https://wildeveloperetrain.tistory.com/143
별도의 클래스에 두 변수들을 선언하고 불러와서 사용하려 했는데, 현재는 두 변수가 사용될 클래스에 전역 변수로 선언한 후 사용하고 있다.
추후에, 별도의 클래스에 두 변수들을 선언하고 사용하는 클래스에서는 사용만 할 수 있도록(선언과 동시에 사용하는 게 아닌) 리팩토링해보면 좋을 것 같다.
'Develop > Spring' 카테고리의 다른 글
서버에서 내려주는 에러 메시지를 직접 정의해야만 하는 이유 (0) | 2023.04.22 |
---|---|
트랜잭션 적용 순서 (0) | 2023.01.25 |
application.properties 파일에 민감한 정보 담기 (0) | 2023.01.10 |
ddl-auto 옵션 (2) | 2022.12.23 |
Spring WebFlux (0) | 2022.12.01 |