Spring - 환경변수 static 변수에 넣기


스프링 프레임 워크에서는 static 변수에 값을 삽입(inject) 할 수 없다.

예를 들어 다음과 같은 환경변수를 설정 하였을 때

// application.yml
hello: spring.profiles.active is default
@Component
public class HelloComponent {

    @Value("${hello}")
    String hello;

    @Value("${hello}")
    static String staticHello;

    public String getHello(){
        return hello; // spring.profiles.active is default
    }

    public String getStaticHello(){
        return staticHello; // null
    }
}

해결방법

non static 메소드를 통해 받은 환경변수를 static 변수에 넣어 줄 수 있다.

@Component
public class HelloComponent {

    @Value("${hello}")
    static String staticHello;

    @Value("${hello}")
    private void setValue(String hello){
        staticHello = hello;
    }

    public String getStaticHello(){
        return staticHello; // spring.profiles.active is default
    }
}

Github : https://github.com/jiyeonseo/spring-static-value-sample