복붙노트

[SPRING] Spring application.properties 파일에서 표현식 사용하기

SPRING

Spring application.properties 파일에서 표현식 사용하기

표현식을 Spring application.properties 파일의 오른쪽 값으로 사용할 수 있습니까?

예를 들면 다음과 같습니다.

logging.level.com.acme=#{'${MY_RUN_ENV}'=='PROD'?'WARN':'DEBUG'}

즉, 작동하지 않습니다. 하지만, 내가 의도 한 것과 비슷한 것을 할 수 있는지 궁금 하네.

해결법

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

    1.아니요, 속성 파일에서 SpEL을 사용할 수 없습니다.

    아니요, 속성 파일에서 SpEL을 사용할 수 없습니다.

    그러나 속성 파일 내에서 자리 표시자를 사용할 수 있습니다 (예 :

    app.name=MyApp
    app.description=${app.name} is a Spring Boot application
    

    유스 케이스의 경우 프로필 별 구성 메커니즘을 살펴 봐야합니다.

    환경 프로파일을 기반으로 다른 구성을로드 할 수 있습니다.

  2. ==============================

    2.이것은 가능하지 않습니다. 봄 부팅 참조에서 :

    이것은 가능하지 않습니다. 봄 부팅 참조에서 :

    대신 프로덕션 환경에서 응용 프로그램 default.properties를 가질 수 있으며 loglevel = WARN을 정의 할 수 있습니다. 그리고 application.properties에서 :

    loglevel=DEBUG
    logging.level.com.acme=${loglevel}
    

    프로필 별 속성 파일 (기본적으로 -default)은 application.properties의 속성 (여기에서 자세한 내용)을 재정의해야합니다.

  3. ==============================

    3.프로파일 기반 특성 파일을 사용하십시오.

    프로파일 기반 특성 파일을 사용하십시오.

    application-dev.properties에서 다음을 수행하십시오. logging.level.com.acme = WARN

    그리고 application-prod.properties : logging.level.com.acme = DEBUG

    FYI 봄 부팅이 프로필 기반 파일에서 속성을 찾지 못하면 기본값의 값을 사용합니다. 따라서 application.properties에 속성을 설정하고 값이 변경되면 프로필 기반 파일에서이를 재정의 할 수 있습니다.

  4. from https://stackoverflow.com/questions/45704466/using-expressions-in-spring-application-properties-file by cc-by-sa and MIT license