복붙노트

[SPRING] Java Spring :`@ Value` 주석을 사용하여`Environment` 속성을 주입하는 방법은 무엇입니까?

SPRING

Java Spring :`@ Value` 주석을 사용하여`Environment` 속성을 주입하는 방법은 무엇입니까?

다음과 같은 구문을 사용합니다.

@Component
public class SomeClass {

    @Inject
    private Environment env;

    private String key;


    @PostConstruct
    private void init() {

        key = env.getProperty("SOME_KEY_PROPERTY");

    }

    ....
}

일부 필드에 일부 속성을 할당 할 수 있습니다.

이 작업을 수행하는 데 필요한 짧고 간결한 형식이 있습니까?

해결법

  1. ==============================

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

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

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

    2.

    @Component
    public class SomeClass {
    
        @Value("#{environment.SOME_KEY_PROPERTY}")
        private String key;
    
        ....
    }
    
  3. ==============================

    3.또한 변수가 정의되지 않은 경우에 대비하여 기본값을 제공하는 것이 유용 할 수 있습니다.

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

    @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;
    
  4. ==============================

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

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

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

    이것은 두 가지 이전 답변의 조합입니다.

  5. from https://stackoverflow.com/questions/14617181/java-spring-how-to-use-value-annotation-to-inject-an-environment-property by cc-by-sa and MIT license