Compartilhamento de tecnologia

Como configurar diferentes variáveis ​​e princípios de ambiente para projetos Java

2024-07-12

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

Como configurar diferentes perfis

Em primeiro lugar, um projeto Java requer diferentes configurações de ambiente. Ao empacotar, as configurações correspondentes são usadas automaticamente. Então, como conseguir isso?

Crie ou adicione um arquivo application.yml no diretório src/main/resources do seu projeto Spring Boot. É aqui que o Spring Boot procura os arquivos de configuração por padrão. Este arquivo pode adicionar configurações comuns.

Em seguida, você também pode criar arquivos como application-test.yml, application-prod.yml, etc. no mesmo diretório. O Spring Boot reconhecerá automaticamente esses arquivos de configuração específicos do perfil. Você pode definir parâmetros para diferentes ambientes nesses arquivos, como endereços de banco de dados, endereços de cache redis, etc.
Ou seja, no diretório src/main/resources podem existir vários arquivos como este:

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

Em seguida, você pode usar application-test.yml e application-prod.yml para declarar duas variáveis ​​com a mesma configuração, mas com valores diferentes.por exemplo
aplicação-teste.yml:

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

aplicação-prod.yml:

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

No código java, você pode usar este URL dinamicamente:

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

Perfeito.

Então, como usar automaticamente o arquivo profile-specific.yml correspondente quando o sistema estiver em execução?Por favor veja abaixo

O princípio da troca automática de perfil

Vejamos como as variáveis ​​de ambiente são passadas para o projeto, camada por camada, da rede externa.
Em primeiro lugar, um projeto Java geralmente é empacotado pelo docker. Então, vamos começar com o docker:

  1. Comando de empacotamento do Docker, com parâmetros de ambiente:
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

Palavras-chave,construir-arg , defina um parâmetro, dc_env=test

  1. Arquivo Docker, declare paradc_env, e usado para o comando 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

Observe que -P significa definir perfil

  1. pom.xml, configure ambientes diferentes

O comando mvn na etapa anterior adicionou -P Onde é usado? Claro que está no arquivo de configuração do marven, que é 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

Acima, 2 variáveis ​​de ambiente são adicionadas.Para cada variável são definidas propriedades, ou seja,perfil.ativo
Onde esse valor pode ser usado?

Use-o no arquivo application.yml principal!

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

Defina qual perfil usar com base no valor da variável profile.active na etapa anterior.

Desde então, as variáveis ​​definidas no pacote docker foram passadas para o arquivo yml principal. Neste arquivo, qualquer que seja o valor server.profiles.active, qual configuração sub-yml será usada. Por exemplo, se for teste, a configuração do application-test.yml será carregada! ! !

Como mudar de ambiente no ambiente de desenvolvimento

  1. Primeiro, o Marven sincroniza primeiro. Após a sincronização, verifique um ambiente.
    Insira a descrição da imagem aqui

  2. Em seguida, compile e empacote localmente e especifique variáveis ​​de ambiente por meio de -P:
    Insira a descrição da imagem aqui

  3. Por fim, para executar, clique no canto superior direito da imagem abaixo. Haverá uma janela pop-up Editar Configuração. No Perfil Ativo, preencha as variáveis ​​de ambiente correspondentes, como teste.
    Insira a descrição da imagem aqui

  4. Finalmente, você pode clicar em Executar!