>Java >java지도 시간 >SpringBoot는 개발 환경과 제품 환경 간을 전환하기 위해 어떻게 여러 구성 파일을 로드합니까?

SpringBoot는 개발 환경과 제품 환경 간을 전환하기 위해 어떻게 여러 구성 파일을 로드합니까?

王林
王林앞으로
2023-05-12 23:58:161815검색

1. 다중 환경 전환은 SpringBoot에서 구현됩니다

SpringBoot에서는 application.properties 외에도 우리가 생성하는 다른 구성 파일의 파일 이름이 application-{profile}.properties 형식을 충족해야 합니다. code>, 여기서 {profile}는 환경 식별자(반드시 .properties 파일일 필요는 없으며 .yml일 수도 있음)에 해당하고 해당 {profile} 값은 사용자 정의됩니다. 개발자(예: 개발, 제품)가 프로젝트를 시작할 때 해당 매개변수만 추가하면 springboot가 구성 파일을 읽습니다. 특정 프로필 구성은 spring.profiles.active 속성을 ​​통해 application.properties 파일에 설정됩니다. 다음으로 예시를 들어 설명하겠습니다application-{profile}.properties的格式,其中{profile}对应你的环境标识(不一定是.properties文件,也可以是.yml)其对应的{profile}值是开发者自定义的(如dev,product),在项目启动的时候,只需要添加对应的参数,springboot就会去读取该配置文件了。具体profile的配置在application.properties文件中通过spring.profiles.active属性来设置。接下来我们以一个例子来说明

(1)首先这里创建了dev、product、qa、stage和默认的application五个配置文件

SpringBoot는 개발 환경과 제품 환경 간을 전환하기 위해 어떻게 여러 구성 파일을 로드합니까?

(2)加载配置文件时会先加载application.properties配置文件(这里一般存放一些公共配置),在该文件中配置要加载的环境的配置文件,这里有两种配置方法。

例如要加载dev环境,可以在application.properties中这样配置

spring.profiles.active=dev

或者使用@spring.profiles.active@,如下所示

spring.profiles.active=@spring.profiles.active@

如果使用这种方式则需要在pom.xml中添加以下内容,其中activeByDefault标签来指定项目启动时默认加载的配置文件。

<profiles>
  <profile>
    <id>dev</id>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
      <spring.profiles.active>dev</spring.profiles.active>
    </properties>
  </profile>
  <profile>
    <id>qa</id>
    <properties>
      <spring.profiles.active>qa</spring.profiles.active>
    </properties>
  </profile>
  <profile>
    <id>stage</id>
    <properties>
      <spring.profiles.active>stage</spring.profiles.active>
    </properties>
  </profile>
  <profile>
    <id>product</id>
    <properties>
      <spring.profiles.active>product</spring.profiles.active>
    </properties>
  </profile>
</profiles>

当执行mvn clean package -P dev 命令对项目进行打包发布时,打出来的jar/war包中的配置文件中@spring.profiles.active@ 会被替换成 dev。

注意@spring.profiles.active@ 要与pom中的标签 <spring.profiles.active></spring.profiles.active>> 保持一致,否则会报错。

SpringBoot는 개발 환경과 제품 환경 간을 전환하기 위해 어떻게 여러 구성 파일을 로드합니까?

2.SpringBoot中配置文件加载顺序

配置文件的优先级排序(以哪个配置文件为准):

1、项目根目录下的config目录。【优先级最高】
2、项目根目录。
3、classpath下的config目录。
4、classpath目录(新建项目时application.properties默认所在位置)。【优先级最低】

配置文件加载顺序和优先级顺序相反,优先级低的先加载,因为如果有重复的配置,先加载的配置文件会被覆盖。

同一级目录下,如果是application.yml,application.properties

(1) 먼저 dev, product, qa, stage 및 기본 애플리케이션의 5개 구성 파일이 여기에 생성됩니다

SpringBoot는 개발 환경과 제품 환경 간을 전환하기 위해 어떻게 여러 구성 파일을 로드합니까?SpringBoot는 개발 환경과 제품 환경 간 전환을 위해 여러 구성 파일을 로드하는 방법

(2) 구성 파일을 로드할 때 application.properties 구성 파일 먼저 로드됩니다(일부 공개 구성은 일반적으로 여기에 저장됩니다). 이 파일에 로드할 환경의 구성 파일을 구성합니다. 두 가지 구성 방법이 있습니다.

예를 들어 개발 환경을 로드하려면 아래와 같이 application.properties

rrreee🎜에서 이렇게 구성하거나 @spring.profiles.active@를 사용하면 됩니다.🎜rrreee🎜이 방법을 사용하려면 다음 내용을 pom.xml 에 추가합니다. 여기서 activeByDefault 태그는 프로젝트가 시작될 때 기본적으로 로드되는 구성 파일을 지정합니다. 🎜rrreee🎜mvn clean package -P dev 명령을 실행하여 프로젝트를 패키징하고 게시하면 jar/war 패키지 구성 파일의 @spring.profiles.active@가 dev로 대체됩니다. 🎜
🎜 @spring.profiles.active@는 pom의 <spring.profiles.active></spring.profiles.active>> 태그와 일치해야 합니다. 오류가 보고됩니다. 🎜
🎜SpringBoot는 어떻게 여러 개발 및 작업을 달성하기 위해 여러 구성 파일을 로드합니까? 제품 기능? 환경 전환🎜🎜2. SpringBoot의 구성 파일 로드 순서🎜🎜구성 파일의 우선 순위 정렬(어떤 구성 파일이 우선해야 하는지): 🎜🎜1. 프로젝트 아래의 config 디렉터리 루트 디렉토리 . [가장 높은 우선순위]
2. 프로젝트 루트 디렉토리.
3. 클래스패스 아래의 config 디렉터리.
4. 클래스 경로 디렉터리(새 프로젝트를 생성할 때 application.properties의 기본 위치) [최하위 우선순위]🎜🎜구성 파일의 로드 순서는 우선 순위와 반대입니다. 중복된 구성이 있는 경우 먼저 로드된 구성 파일을 덮어쓰게 되기 때문입니다. 🎜🎜동일한 디렉터리 아래에 application.ymlapplication.properties 구성 파일이 동시에 존재하는 경우 application.properties 구성 파일이 우선 적용됩니다. .yml 파일 다음에 .properties 파일을 로드합니다. 🎜🎜🎜🎜🎜우선순위: 1->2->3->4->5. 🎜🎜파일 로딩 순서: 5->4->3->2->1. 🎜

위 내용은 SpringBoot는 개발 환경과 제품 환경 간을 전환하기 위해 어떻게 여러 구성 파일을 로드합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제