[spring] 프로퍼티 파일 (*.properties) 의 내용을 정적 멤버(static member field)에 할당하는 방법 (feat. @Value)

By | 12월 5, 2023

방법 1

  • @Value 를 field가 아닌 static setter method 에 붙이기.
    => component 초기화 시 자동으로 setter가 호출된다고 한다.
@Component
public class MyBean {

    private static String staticProperty;

    @Value("${my.property}")
    private void setStaticProperty(String myProperty) {
        MyBean.staticProperty = myProperty;
    }

    public static String getStaticProperty() {
        return staticProperty;
    }
}

소감

  • null fallback을 따로 해 주지 않아도 되서 편한 듯.
  • 어찌 됐건 getter, setter 구조가 더 들어가야 하니 불편한 점은 있다.

    => 이거 해 봤는데 안되는 것 같다. 검증 필요!


방법 2

  • 위와 유사하게, @Value가 붙은 instance member 들을 갖는 @Component 를 정의
  • static property를 필요로 하는 클래스에서 위의 Component class 자체를 static member로 정의
  • 프로퍼티 적용 시점에 해당 Component (적용 클래스의 static member)가 null이면 ContextLoader를 사용해서 bean 획득 후 static member에 할당. null이 아니면 그냥 사용.

소감

  • null check를 신경써야 해서 불편
  • static으로 써야 하는 property가 많을 경우는 편리할지도.
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments