환경 변수에 따라 Spring Boot application.properties를 설정합니다.
저는 다양한 환경에서 실행되는 Spring Boot 애플리케이션이 있으며, 애플리케이션이 실행되는 환경에 따라 다른 데이터베이스에 연결됩니다.몇개 있어요application.properties
파일, 환경별로 하나씩 다음과 같은 형태로 구성됩니다.
application-local.properties
:
spring.datasource.platform=postgres
spring.datasource.url=jdbc:postgresql://localhost:5432/mydb
spring.datasource.username=dbuser
spring.datasource.password=123456789
application-someserver.properties
:
spring.datasource.platform=postgres
spring.datasource.url=jdbc:postgresql://someserver:5432/myproddb
spring.datasource.username=produser
spring.datasource.password=productionpass
등.
각 환경에는 다음과 같은 환경 변수가 있습니다.MYENV
예를 들어 환경의 유형으로 설정됩니다.local
아니면someserver
(이름)application-{env}.properties
파일이 환경 이름과 완벽하게 일치합니다.
이 환경 변수를 읽고 자동으로 올바른 스프링 부트를 선택하려면 어떻게 해야 합니까?.properties
파일이요? 저는 그 모든 것을 할 필요가 없습니다.-Dspring.profiles.active=someserver
이 패키지의 배포 방식 때문에(병으로 실행되지 않음).
이 환경 변수를 읽고 자동으로 올바른 .properties 파일을 선택하도록 스프링 부팅을 하려면 어떻게 해야 합니까?
Spring Boot에게 활성 프로파일을 선택하라고 합니다.MYENV
속성 또는 환경 변수.이렇게 하는 한 가지 방법은 다음을 당신의 것에 추가하는 것입니다.application.properties
:
spring.profiles.active=${MYENV}
이렇게 하면 스프링 부츠가 세팅됩니다.spring.profiles.active
의 가치까지MYENV
환경 변수.
이 패키지가 배포되는 방식 때문에 전체 -Dspring.profile.active= some 서버를 수행할 필요가 없습니다(항아리로 실행되지 않음).
이에 해당하는 환경 변수를 사용할 수 있습니다.spring.profiles.active
, 시스템 속성을 전달하고 싶지 않다면-D
논쟁들.해당 환경 변수는SPRING_PROFILES_ACTIVE
. 예를 들어 다음과 같이 설정할 경우SPRING_PROFILES_ACTIVE
로.local
,그local
프로파일이 활성화됩니다.당신이 만약 당신이 사용할 것을 주장한다면MYENV
환경변수, 첫번째 해결책은 가야할 길입니다.
해당 응용 프로그램을 일부 컨테이너(tomcat, weblogic, ...)에 배포하는 경우 환경 변수를 지정할 수 있습니다.예를 들어 환경 변수를 지정합니다.application1.spring.profiles.active=someserver
application.properties set property에 저장합니다.spring.profiles.active=${application1.spring.profiles.active}
Spring context 5.0을 사용하여 다음 주석을 통해 시스템 환경을 기반으로 올바른 속성 파일을 로드하는 데 성공했습니다.
@PropertySources({
@PropertySource("classpath:application.properties"),
@PropertySource("classpath:application-${MYENV:test}.properties")})
여기서 MYENV 값은 시스템 환경에서 읽혀지고 시스템 환경이 존재하지 않으면 기본 테스트 환경 속성 파일이 로드되고, MYENV 값을 잘못 지정하면 응용 프로그램을 시작하지 못합니다.
참고: 각 프로파일에 대해 애플리케이션-[프로파일]을 작성해야 하는 상태를 유지해야 합니다.속성 파일 및 Spring context 5.0을 사용했지만 Spring boot는 사용하지 않았습니다 - 이것은 Spring 4.1에서도 작동할 것으로 생각합니다.
이 솔루션은 최소한의 의존성으로 AWS Lambda에 대해 제가 생각하는 최고의 솔루션입니다.
언급URL : https://stackoverflow.com/questions/38336753/set-spring-boot-application-properties-based-on-environment-variable
'it-source' 카테고리의 다른 글
부트스트랩 4 - 특정 탭 링크 (0) | 2023.09.28 |
---|---|
서로 다른 행에서 서로 다른 조건을 만족하는 값 선택 (0) | 2023.09.28 |
비주얼 에디터와 같은 워드프레스를 찾습니다. (0) | 2023.09.28 |
MySQL에서 다음 달의 첫 번째 날짜와 마지막 날짜 가져오기 (0) | 2023.09.28 |
#1060 - 중복된 열 이름 'id' (0) | 2023.09.28 |