Spring @Value 에너테이션으로 static 필드 값을 대입하는 법

November 11, 2023


기본 사용법

스프링에서 application.propertiesyml에서 저장한 값을 불러오기 위해서 @Value 에너테이션을 사용할 수 있습니다.

@Value("${app.name}")
private String name;

그런데 이 방식으로는 final 키워드를 적용할 수 없습니다. 그래서 부주의로 값이 변경될 수도 있습니다.

final과 함께 사용

final 키워드를 지정하고 싶다면, 생성자 주입 방식을 사용할 수 있습니다.

public class MyClass {
    private final String myName;

    public MyClass(@Value("${app.name}") String myName) {
        this.myName = myName;
    }
}

static에서 사용

생성자 주입 방식으로 final을 사용할 수 있지만, static 키워드를 지정할 수 없습니다.

setter 주입 방식을 사용해서 static 필드 값을 외부에서 주입할 수 있습니다.

public class SomeClass {
    private static String name;

    @Value("${app.name}")
    public void setName(String name) {
        SomeClass.name = name;
    }
}

Profile picture

이재원

이해하기 쉬운 코드를 작성하려 고민합니다.


© 2024 Won's blog Built with Gatsby