기술나눔

Java 프로젝트에 대해 다양한 환경 변수 및 원칙을 구성하는 방법

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

다양한 프로필을 구성하는 방법

우선, Java 프로젝트에는 다양한 환경 구성이 필요합니다. 패키징 시 해당 구성이 자동으로 사용됩니다. 그렇다면 그것을 달성하는 방법은 무엇입니까?

Spring Boot 프로젝트의 src/main/resources 디렉터리에 application.yml 파일을 만들거나 추가합니다. Spring Boot가 기본적으로 구성 파일을 찾는 곳입니다. 이 파일은 일반적인 구성을 추가할 수 있습니다.

그런 다음 동일한 디렉터리에 application-test.yml, application-prod.yml 등과 같은 파일을 만들 수도 있습니다. Spring Boot는 이러한 프로필별 구성 파일을 자동으로 인식합니다. 데이터베이스 주소, Redis 캐시 주소 등과 같은 다양한 환경에 대한 매개변수를 이러한 파일에 정의할 수 있습니다.
즉, src/main/resources 디렉터리에는 다음과 같은 여러 파일이 있을 수 있습니다.

application.yml
application-prod.yml
application-test.yml
  • 1
  • 2
  • 3

그런 다음 application-test.yml 및 application-prod.yml을 사용하여 구성은 동일하지만 값이 다른 두 변수를 선언할 수 있습니다.예를 들어
애플리케이션-테스트.yml:

mysql:
  url: https://xx.test.com/mysql
  • 1
  • 2

application-prod.yml:

mysql:
  url: https://xx.online.com/mysql
  • 1
  • 2

Java 코드에서는 이 URL을 동적으로 사용할 수 있습니다.

    @Value("${mysql.url}")
    protected String mysqlUrl;
  • 1
  • 2

완벽한.

그렇다면 시스템이 실행 중일 때 해당 profile-Specific.yml 파일을 자동으로 사용하려면 어떻게 해야 할까요?아래를 봐주세요

프로파일 자동 전환의 원리

환경 변수가 외부 네트워크에서 계층별로 프로젝트에 어떻게 전달되는지 살펴보겠습니다.
우선, Java 프로젝트는 일반적으로 docker로 패키지됩니다. 이제 도커부터 시작해 보겠습니다.

  1. 환경 매개변수가 포함된 Docker 패키징 명령:
docker build -f assistant-web-api/qke/Dockerfile -t docker-registry.qiyi.virtual/mbd-ai/assistant-web-api-test:$tag . --build-arg dc_env=test
  • 1

핵심 단어,빌드-인수 , 매개변수 dc_env=test를 설정합니다.

  1. Docker 파일, 다음으로 선언dc_환경, mvn 명령에 사용됩니다.
ARG dc_env
...
RUN mvn -T 8 -DdisableRpm=true -pl '!assistant-web-manager' clean package -Dmaven.test.skip=true -P${dc_env}
  • 1
  • 2
  • 3

-P는 프로필 설정을 의미합니다.

  1. pom.xml, 다양한 환경 구성

이전 단계의 mvn 명령에 -P가 추가되었습니다. 어디에 사용됩니까? 물론 marven 구성 파일인 pom.xml에 있습니다.

<profiles>
        <profile>
            <id>test</id>
            <properties>
                <profile.active>test</profile.active>
                <log.env>test</log.env>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <profile.active>prod</profile.active>
                <log.env>prod</log.env>
            </properties>
        </profile>
    </profiles>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

위에는 환경변수 2개가 추가되었습니다.각 변수에 대해 속성이 설정됩니다.프로필.활성
이 값은 어디에 사용될 수 있나요?

기본 application.yml 파일에서 사용하세요!

server:
  profiles:
    active: @profile.active@
  • 1
  • 2
  • 3

이전 단계의 profile.active 변수 값을 기반으로 사용할 프로필을 정의합니다.

그 이후로 docker 패키지에서 정의된 변수가 기본 yml 파일에 전달되었습니다. 이 파일에서는 server.profiles.active 값에 관계없이 어떤 하위 yml 구성이 사용됩니다. 예를 들어 테스트인 경우 application-test.yml 구성이 로드됩니다! ! !

개발 환경에서 환경을 전환하는 방법

  1. 먼저 marven이 먼저 동기화합니다. 동기화 후 환경을 확인하세요.
    여기에 이미지 설명을 삽입하세요.

  2. 그런 다음 로컬로 컴파일 및 패키징하고 -P를 통해 환경 변수를 지정합니다.
    여기에 이미지 설명을 삽입하세요.

  3. 마지막으로 실행하려면 아래 그림의 오른쪽 상단을 클릭하면 Edit Configuration 팝업 창이 나타납니다. Active Profile에 해당 환경 변수(예: test)를 입력합니다.
    여기에 이미지 설명을 삽입하세요.

  4. 마지막으로 실행을 클릭하면 됩니다!