[Spring] static 필드에 injection 하기

Woody의 기록·2023년 8월 21일
2

Appplication.yml에 민감한 값들을 정의해두고 이 파일을 깃 서브 모듈로 관리하도록 변경하는 과정에서,

프로젝트에 기존에 있던 ENV 클래스에 @Value 어노테이션을 통해 Appplication.yml에 정의된 값을 주입하도록 바꾸면서 static 변수에는 주입할 수 없다는 것이 생각났다.

Application.yml

ENV class

위와 같이 Static으로 선언된 변수에 Injection을 하려고 하면 주입이 되지 않아 null 값을 가지게 된다.

non-static Setter 메소드를 통한 주입

이런 경우 해당 클래스에 @Component 어노테이션을 달아 빈으로 등록해주고,

static이 아닌 setter 메서드를 선언한 후, 해당 setter에 주입해주면 해결된다.

ENV 클래스를 빈으로 등록

static이 아닌 setter 메서드 선언 후 여기에 주입

테스트

간단하게 main 메서드에서 sout으로 출력해봐서 잘 주입이 되었는지 확인해보았다.

이렇게 static 필드는 non-static setter를 선언한 후 해당 setter에 주입해주면 된다.

profile
Github - https://www.github.com/woody35545

0개의 댓글