스프링 프로파일 응용프로그램 속성 순서
여러 개의 활성 Spring 프로파일이 있는 많은 환경이 있지만 application-{profile}yml 파일의 우선 순위는 무엇입니까?
있다면,spring.profiles.active=test-us-west-2-p1, test-us-west-2, test
어떤 순서로 파일을 실행합니까?application-test.yml, application-test-us-west-2.yml, application-test-us-west-2-p1.yml
짐을 지셨나요?각 파일에 동일한 속성이 있는 경우 어느 것이 "승리"합니까?
또한 Spring-Boot 1.5.x에서 2.x로 변경되었습니까?그럴 수도 있는 것 같아요.
프로파일의 속성은 사용자가 지정한 순서와 동일하게 로드되며, 동일한 속성이 다른 프로파일에 정의된 경우 마지막 프로파일이 승리합니다.
이 동작은 Spring Boot 버전 1.5.x와 2.x 모두에 적용되며, 내 기억이 정확하다면 모든 버전의 Spring에 적용됩니다.
Spring은 항상 application.yml을 로드합니다.나중에 일부 프로필이 지정되면 해당 프로필의 속성 파일이 로드됩니다.해당 프로필 이후에 다른 프로필이 지정되면 해당 프로필의 속성 파일이 로드됩니다.항상 현재 속성 값을 새 속성 값으로 재정의합니다.
프로파일 1과 프로파일 2가 있다고 가정해 보겠습니다.다음과 같은 속성 파일이 있습니다.
application.yml:
property1: bob
property2: alice
property3: eve
application-profile1.yml:
property2: alice1
property3: eve1
application-profile2.yml:
property3: eve2
애플리케이션을 시작할 때는 다음과 같습니다.spring.profiles.active=profile1, profile2
다음과 같은 이점이 있습니다.
property1: bob
property2: alice1
property3: eve2
우선, 우리는 모든 활성 프로파일의 최종 세트를 찾아야 합니다.활성 프로필을 설정/교체하고 기존 활성 프로필 위에 활성 프로필을 추가하는 방법이 있습니다.예를 들어, 활성 프로파일은 다음과 같이 설정됩니다.spring.profiles.active
속성이 다음으로 대체되었습니다.-Dspring.profiles.active
명령행 옵션입니다. (그리고 이것은 매우 복잡해질 수 있습니다.
반면에, 그것은.SpringApplicationBuilder's
profiles
메서드가 기존 활성 프로필에 추가됩니다.다음 코드를 사용하여 활성 프로필의 최종 집합을 파악할 수 있습니다.
@Autowired
private Environment environment;
...
System.out.println("Active profiles: " +
Arrays.toString(environment.getActiveProfiles()));
이제 우리는 스프링 문서가 마지막 승리 전략이라고 부르는 것을 고려해야 합니다.
여러 프로파일이 지정된 경우 최종 승리 전략이 적용됩니다.
따라서 다음 코드가 있고 다른 모든 옵션이 제외된 경우:
new SpringApplicationBuilder(Application.class)
.profiles("dev", "prod")
.run(args);
둘다요.application-dev.properties
그리고.application-prod.properties
파일이 로드되고 후자(프로덕션)의 동일한 이름을 가진 키가 전자 키를 재정의합니다.
프로필 주문 처리에 중요한 공지를 올렸습니다.이 프로세스에서 jar 리소스 파일이 처리되는 방법은 여기를 참조하십시오.
언급URL : https://stackoverflow.com/questions/51565409/spring-profiles-application-properties-order
'programing' 카테고리의 다른 글
Flexbox 열을 왼쪽과 오른쪽으로 정렬하는 방법은 무엇입니까? (0) | 2023.08.17 |
---|---|
문자열에 다른 문자열이 포함되어 있습니다. (0) | 2023.08.17 |
단일 .sql 스크립트 파일을 사용하여 여러 테이블 만들기 (0) | 2023.08.17 |
Google 공동 연구소: GPU에 대한 오해의 소지가 있는 정보(일부 사용자는 5%의 RAM만 사용 가능) (0) | 2023.08.17 |
어떻게 신속하게 선택적 마감을 합니까? (0) | 2023.08.17 |