Spring

스프링 부트 - static 멤버에 @value Injection 하기

구티맨 2021. 12. 7. 12:01

    property에 있는 값을 @Value를 사용하여 멤버 변수에 값을 Injection하여 자주 사용을 합니다.
     

    이때 static 멤버에 Injection을 하려고 하면 되지가 않습니다.

     

    String 변수를 예로 들면, null로 되어있습니다.

     

    이유는 Spring에서 @Value 가 static field에 대해 지원하지 않기 때문입니다.

    public class Inject {
    
        @Value("${file.path}")
        private static String PATH; // null
    
    }

     

    static 변수에 Injection을 하려면, 아래와 같이 setter injection으로 값을 할당할 수 있습니다.

    public class Inject {
        private static String PATH;
    
        @Value("${file.path}")
        public void setPath(String path){
            Inject.PATH = path;
    }