방법 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가 많을 경우는 편리할지도.