Spring 앱의 옵션 환경 변수
Spring Boot 앱에서application.properties
정의는 다음과 같습니다.
someProp=${SOME_ENV_VARIABLE}
단, 이것은 특정 환경에서만 설정되는 옵션 값이기 때문에 다음과 같이 사용합니다.
@Value("${someProp:#{null}}")
private String someProp;
놀랍게도 이 오류는 env. var가 존재하지 않을 때 발생합니다.
Could not resolve placeholder 'SOME_ENV_VARIABLE' in string value "${SOME_ENV_VARIABLE}"
나는 스프링이 아무것도 찾을 수 없는 경우 빈 값을 설정할 것이라고 예상했습니다.PropertySource
.
옵션화 방법
에서 기본값을 지정합니다.application.properties
someProp=${SOME_ENV_VARIABLE:#{null}}
다음과 같이 사용하는 경우@Value("${someProp})
, 이것은 올바르게 평가됩니다.null
첫째, 만약SOME_ENV_VARIABLE
다음 경우 찾을 수 없습니다.application.properties
처리 중입니다.그 값은 문자열 리터럴 "#{disternal}"이 됩니다.그리고나서,@Value
평가하다someProp
SpEL 표현으로서 결과적으로null
실제 값은 의 속성을 통해 확인할 수 있습니다.Environment
콩.
이 솔루션은 클래스에서 지정된 기본값 구문을 사용합니다.
기본 속성 값은 속성 속성을 통해 각 구성자 인스턴스에 대해 글로벌하게 정의하거나 기본값 구분자 ":"를 사용하여 속성별로 정의할 수 있으며 setValueSeparator(String)를 통해 커스터마이즈할 수 있습니다.
외부 설정에 관한 Spring Boot 문서에서
마지막으로 SpEL 식을 @Value에 쓸 수 있지만 이러한 식은 응용 프로그램 속성 파일에서 처리되지 않습니다.
이 작업은 다음과 같습니다.
spring.datasource.url=jdbc:mysql://${DB_IP:localhost}:3306/app
spring.datasource.username=${SPRING_DATASOURCE_USERNAME:mylocaluser}
spring.datasource.password=${SPRING_DATASOURCE_PASSWORD:localpass}
이것은 아마 여기 오는 다른 사람들에게 흥미로울 것이기 때문에 env 변수가 있는 속성 파일을 암묵적으로 덮어쓸 수 있습니다.재산이 있다고 칩시다.
someapp.foo
그런 다음 env 변수를 정의할 수 있습니다.SOMEAPP_FOO
(대문자와 .-> _ ) 및 spring은 env. 변수에서 속성을 암묵적으로 설정합니다.
여기에 기재되어 있다
https://www.tutorialworks.com/spring-boot-kubernetes-override-properties/
언급URL : https://stackoverflow.com/questions/47580247/optional-environment-variables-in-spring-app
'programing' 카테고리의 다른 글
HTML5 다중 파일 업로드: AJAX를 통해 하나씩 업로드 (0) | 2023.04.04 |
---|---|
OpenCart에서 간단한 모듈을 만드는 방법Wordpress에서 최신 게시물을 가져와 OpenCart에 표시하는 예? (0) | 2023.04.04 |
값이 null이 아닌 Mongoose 쿼리 (0) | 2023.04.04 |
Postgres에서 JSON 개체에 요소 추가 (0) | 2023.03.25 |
언로드 이벤트를 사용하여 Ajax 요청을 확실하게 실행할 수 있습니까? (0) | 2023.03.25 |