programing

Java 스프링:'@Value' 주석을 사용하여 'Environment' 속성을 주입하는 방법은?

iphone6s 2023. 7. 26. 21:41
반응형

Java 스프링:'@Value' 주석을 사용하여 'Environment' 속성을 주입하는 방법은?

다음과 같은 구성 사용

@Component
public class SomeClass {

    @Inject
    private Environment env;

    private String key;


    @PostConstruct
    private void init() {

        key = env.getProperty("SOME_KEY_PROPERTY");

    }

    ....
}

일부 속성으로 일부 필드를 할당할 수 있습니다.

이것을 할 수 있는 더 짧고 간결한 형태가 있습니까?

@Component
public class SomeClass {

    @Value("#{environment.SOME_KEY_PROPERTY}")
    private String key;

    ....
}

이 작업을 수행할 수 있어야 합니다(PropertySourcesPlaceHolderConfigurer가 등록되어 있다고 가정).

    @Value("${SOME_KEY_PROPERTY}")
    private String key;

다음을 사용하여 기본값을 설정할 수 있습니다.

    @Value("${SOME_KEY_PROPERTY:default-value}")

변수가 정의되지 않은 경우 기본값을 제공하는 것이 유용할 수도 있습니다.

@Value("${some_property:default_value}")
private String key;

그렇지 않으면 언제든지 예외가 발생합니다.some_property정의되지 않았습니다.

default_value또한 공백일 수 있습니다. 이 경우에는 다음과 같이 동작합니다.some_property선택 사항:

@Value("${some_property:}")
private String key;

(콜론에 주의)

기본값에 특수 문자(점, 콜론 등)가 포함된 경우 다음과 같이 SpEL로 래핑합니다.

@Value("${some_property:#{'default_value'}}")
private String key;

환경 변수를 기본값으로 추가해야 하는 경우.

@Value("${awsId:#{environment.AWS_ACCESS_KEY_ID}}")
@Value("${awsSecret:#{environment.AWS_SECRET_ACCESS_KEY}}")

이것은 두 개의 이전 답변을 조합한 것입니다.

스프링 부트에서 속성 값을 재정의하는 방법은 17가지가 있으며, 그 중 하나가 환경 변수입니다(공식 문서의 항목 10).

유일한 요령은 속성 이름을 대문자와 밑줄로 변환해야 한다는 것입니다.예를 들어 속성을 덮어쓰려는 경우

myApp.myProperty

그러면 당신은 환경 변수라는 것을 가져야 합니다.

MYAPP_MYPROPERTY

이것은 당신이 그냥 가질 수 있다는 것을 의미합니다.

@값("${myApp.myProperty}")

사용자 지정 없이도 환경 변수로 덮어쓸 수 있습니다.

언급URL : https://stackoverflow.com/questions/14617181/java-spring-how-to-use-value-annotation-to-inject-an-environment-property

반응형