> Java > java지도 시간 > 본문

SpringBoot는 Profile을 통해 다양한 환경에서 구성 전환을 어떻게 실현합니까?

王林
풀어 주다: 2023-05-10 19:16:04
앞으로
1640명이 탐색했습니다.

SpringBoot는 프로필을 사용하여 공통 개발 환경, 테스트 환경 및 프로덕션 환경과 같은 다양한 환경에서 구성 전환을 달성합니다.

SpringBoot에서 일반적으로 사용되는 구성 파일에는 속성 파일과 yml 파일이라는 두 가지 주요 유형이 있습니다. 속성 파일의 경우 주로 여러 프로필 구성 파일을 통해 구현되고, yml 파일의 경우 주로 여러 조각을 통해 구현됩니다(구성 조각은 yml 파일에서 세 개의 가로 막대로 나뉩니다).

Profile은 실제 작업에서 사용하기 더 편리합니다. SpringBoot 프로그램이 개발된 후에는 최종적으로 jar 패키지로 패키징되어 사용하게 됩니다. 외부 구성 파일에 프로필 이름을 지정하여 사용할 수 있습니다. 사용할 환경(개발 환경, 테스트 환경, 프로덕션 환경)의 구성 매개변수입니다.

1. 프로젝트 구축

이 블로그의 데모에서는 2개의 SpringBoot 프로젝트를 구축하여 각각 2개의 프로필을 사용하는 방법을 보여줍니다.

Demo1은 여러 속성 파일을 통해 구현되고 Demo2는 단일 yml 파일을 통해 구현됩니다.

SpringBoot는 Profile을 통해 다양한 환경에서 구성 전환을 어떻게 실현합니까?

SpringBoot의 경우 클래스를 작성하면 패키지 또는 하위 패키지 아래에 있습니다. 시작 클래스가 있는 경우에는 시작 클래스에 검색 패키지를 구성할 필요가 없습니다. 왜냐하면 SpringBoot는 기본적으로 시작 클래스가 있는 패키지와 해당 하위 패키지 아래의 모든 클래스 파일에서 주석을 검색하기 때문입니다. 따라서 데모의 편의를 위해 후속 데모에서는 시작 클래스가 있는 패키지 또는 하위 패키지 아래에 클래스 파일을 작성합니다.

동일한 코드를 가진 TestController 클래스는 매개변수 없는 인터페이스 액세스를 제공하기 위해 두 데모 모두에 작성되었습니다. 반환된 결과는 현재 활성화된 프로필 이름과 프로필 구성 파일에 구성된 포트 번호이므로 모든 사람이 데모를 수행하는 데 편리합니다. 테스트 결과를 확인할 때 IDEA 콘솔에 출력된 정보를 직접 확인하여 결과를 확인할 수도 있습니다. TestController 클래스의 구체적인 내용은 다음과 같습니다.

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @Autowired
    private Environment env;

    @RequestMapping("/getport")
    public String getPort()
    {
        StringBuilder sb = new StringBuilder();

        String[] activeProfiles = env.getActiveProfiles();
        sb.append("启动的 profile 名称为:").append(activeProfiles[0]);

        sb.append("<br/>");

        String portValue = env.getProperty("server.port");
        sb.append("启动的端口为:").append(portValue);
        return sb.toString();
    }
}
로그인 후 복사

2. 다중 파일 구성 방법

Demo1의 SpringBoot 프로그램은 속성 파일을 구성 파일로 사용하므로 다중 파일 구성 방법을 사용하여 프로필을 구현합니다. .

SpringBoot의 구성 파일은 application으로 시작해야 합니다. Demo1에서는 profile 다중 환경 구성을 구현하기 위해 application-profile name.properties의 명명 형식을 사용합니다. 속성이 사용되는 경우, application-pro.properties 3개 파일은 개발 환경, 테스트 환경 및 프로덕션 환경의 구성 파일을 나타냅니다. 구성 내용은 편의상 여기서는 데모를 위해 SpringBoot의 시작 포트만 구성합니다.

# application-dev.properties 配置内容
# 配置文件必须以 application 开头
# 后面的 dev 表示 profile 配置文件的名称
server.port=8081
# application-test.properties 配置内容
# 配置文件必须以 application 开头
# 后面的 test 表示 profile 配置文件的名称
server.port=8082
# application-pro.properties 配置内容
# 配置文件必须以 application 开头
# 后面的 pro 表示 profile 配置文件的名称
server.port=8083
로그인 후 복사

application.properties에서 구성해야 하는 특정 A 프로필 구성 파일을 사용하려면 프로필 이름:

# application-pro.properties 配置内容
# 本 Demo 中编写了多个以 application 开头的配置文件
# 通过以下配置项指定 profile 名称,设置所要启动的配置文件
spring.profiles.active=test
로그인 후 복사

그런 다음 Demo1의 SpringBoot 프로그램을 시작합니다. 예를 들어 위의 예에서는 프로필 테스트를 사용하고 해당합니다. 시작 포트는 8082이므로 TestController에서 제공하는 localhost:8082/getport 인터페이스에 액세스하면 프로필 구성 정보를 확인할 수 있습니다.

3. 다중 조각 구성 방법

Demo2의 SpringBoot 프로그램은 yml 파일을 구성 파일로 사용하므로 다중 조각 구성을 사용하여 프로필을 구현합니다.

세 개의 가로 막대(---)를 사용하여 아래와 같이 application.yml의 구성 조각을 구분합니다.

# 本 Demo 中只编写了一个 application.yml 的配置文件
# 通过三个横杠(---)来分隔开 3 种配置文件
# 通过 spring.config.activate.on-profile 设置 profile 的名称

# 通过以下配置项指定 profile 名称,设置所要启动的配置文件
spring:
  profiles:
    active: pro
---
server:
  port: 9091

spring:
  config:
    activate:
      on-profile: dev
---
server:
  port: 9092

spring:
  config:
    activate:
      on-profile: test
---
server:
  port: 9093

spring:
  config:
    activate:
      on-profile: pro
로그인 후 복사

그런 다음 Demo2의 SpringBoot 프로그램을 시작합니다. 예를 들어 위 예에서 사용된 프로필은 pro이고 해당 시작 포트는 9093이므로 TestController에서 제공하는 localhost:9093/getport 인터페이스에 접속하여 프로파일 구성 정보를 확인할 수 있습니다.

4. 외부 구성 파일을 사용하세요

SpringBoot 프로그램이 개발되면 구성 파일과 함께 jar 패키지로 패키징되므로 구성 파일을 변경할 수 없습니다. 따라서 구성 파일을 외부에 복사하여 jar 패키지와 함께 배치하고 명령줄을 사용하여 SpringBoot 프로그램을 시작하고 명령줄 매개 변수(--spring.config.conf)를 통해 사용할 외부 구성 파일 경로를 지정할 수 있습니다. 위치). 프로필 구성은 외부 구성 파일에서 수정되어 다른 환경에서 구성을 전환할 수 있습니다.

아래 그림과 같이 Demo1에서 패키지한 jar 패키지와 구성 파일을 d:javacodedemo1 폴더에 넣습니다.

SpringBoot는 Profile을 통해 다양한 환경에서 구성 전환을 어떻게 실현합니까?

그런 다음 이 디렉터리에서 다음 명령줄을 실행하여 SpringBoot 프로그램을 시작합니다.

D:\javacode\demo1> java -jar .\demo1-0.0.1-SNAPSHOT.jar --spring.config.location=.\application.properties
로그인 후 복사

application.properties에 구성된 프로필이 테스트이므로 포트 8082가 시작됩니다.

아래 그림과 같이 Demo2에서 패키지한 jar 패키지와 구성 파일을 d:javacodedemo2 폴더에 넣습니다.

SpringBoot는 Profile을 통해 다양한 환경에서 구성 전환을 어떻게 실현합니까?

그런 다음 이 디렉터리에서 다음 명령줄을 실행하여 SpringBoot 프로그램을 시작합니다.

D:\javacode\demo2> java -jar .\demo2-0.0.1-SNAPSHOT.jar --spring.config.location=.\application.yml
로그인 후 복사
application.yml에 구성된 프로필이 pro이므로 포트 9093이 시작됩니다.

위 내용은 SpringBoot는 Profile을 통해 다양한 환경에서 구성 전환을 어떻게 실현합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿