[Desenvolvimento de pilha completa em Java] Arquivo de configuração SpringBoot e configuração multiambiente


O Spring Boot usa um arquivo de configuração global application.properties , que é colocado no diretório src/main/resources ou em /config no caminho de classe. O papel do arquivo de configuração global do SpringBoot é modificar os valores de configuração de algumas configurações padrão, e também permitir que os usuários personalizem as propriedades de configuração.
application.yaml também é um tipo de arquivo de configuração.A diferença entre os dois arquivos de configuração é que o formato do arquivo das propriedades de configuração é diferente.

Este blog usa application.properties para configuração

Nota: Se não houver nenhum arquivo application.propertiesou application.yamlarquivo de configuração no projeto, você pode criar um novo no caminho do recurso

1. Propriedades de configuração

propriedades personalizadas

Muitas propriedades customizadas precisam application.propertiesser definidas em , como configuração de constante de banco de dados, configuração de número de porta padrão, etc. Além dessas constantes de configuração, também são permitidas constantes personalizadas:

# applicatino.properties 中指定配置
com.atcjx.name=cuijiexiang
com.atcjx.password=123456

Adicione uma anotação acima da variável de membro no arquivo de configuração que precisa ser usado @Value(“${path}”)e você pode vincular o valor na classe do arquivo de configuração à variável de membro:

@RestController
public class baseController {
    
    
    @Value("${com.atcjx.name}")
    private String name;

    @Value("${com.atcjx.password")
    private String password;

    @RequestMapping("/")
    String request(){
    
    
        System.out.println("读取到的配置文件数据数据:");
        System.out.println("用户名称:" + name);
        System.out.println("密码:" + password);
        return null;
    }
}

Depois de iniciar o projeto localhost:8080/, você pode ver os seguintes resultados:

imagem-20220330203128898

Se houver muitos valores de atributo a serem injetados, levará muito tempo para vincular um por um. Para vincular rapidamente um grande número de atributos de configuração, é oficialmente recomendado usar @ConfigurationProprites(prefix = “...”)anotações para especificar qual prefixo de atributo no arquivo de configuração a ser usado.

@Component
@ConfigurationProperties(prefix = "com.atcjx")
public class configBean {
    
    

    private String name;
    private String password;
    // 省略get、set方法
}

Deve-se notar que @ConfigurationPropertiesas anotações precisam ser injetadas no contêiner IOC para uso: com anotações de classe de injeção Spring, por exemplo @Component, também é necessário adicionar adições à classe de entrada @EnableConfigurationProperties.

// 开启允许配置文件配置属性
@EnableConfigurationProperties
@SpringBootApplication
public class SpringBootTestApplication {
    
    

    public static void main(String[] args) {
    
    
        SpringApplication.run(SpringBootTestApplication.class, args);
    }
}

Use a injeção Spring onde você precisa usar:

@RestController
public class baseController {
    
    
    // 使用@AutoWired注入
    @Autowired
    configBean configBean;

    @RequestMapping("/")
    String request(){
    
    
        System.out.println("读取到的配置文件数据数据:");
        System.out.println("用户名称:" + configBean.getName());
        System.out.println("密码:" + configBean.getPassword());
        return "";
    }
}

Acesso localhost:8080/: lido com sucesso!

imagem-20220330205525745

propriedade de valor aleatório

Em muitos casos, o valor aleatório também é uma parte importante da configuração.Se a geração do valor aleatório for colocada no código, o código ficará inchado e difícil de entender. Os arquivos de configuração do SpringBoot nos ajudam a resolver esse problema. O uso ${random}pode gerar aleatoriamente diferentes tipos de valores, como: int, long, string type.

dudu.secret=${random.value}
dudu.number=${random.int}
dudu.bignumber=${random.long}
dudu.uuid=${random.uuid}
dudu.number.less.than.ten=${random.int(10)}
dudu.number.in.range=${random.int[1024,65536]}

2. Arquivo de configuração

Prioridade do perfil

Classifique por prioridade decrescente :

  1. caminho do arquivo:/config/applicaiton.properties
  2. caminho do arquivo:/applicaiton.properties
  3. caminho de classe:/config/applicaiton.properties
  4. caminho de classe:/applicaiton.properties

As localizações são as seguintes:

imagem-20220330213518226

Perfis de prioridade mais alta podem substituir perfis de prioridade mais baixa.

Comparando os arquivos application.properties e application.yml no mesmo caminho, a prioridade de configuração de application.properties será maior!


Configuração de vários ambientes

Em muitos casos, os aplicativos precisam ser implantados em diferentes ambientes de tempo de execução, o que leva a diferentes detalhes de configuração do ambiente. Tome o log como exemplo, o log de produção definirá o nível de log para WARNou superior, e o log precisa ser gravado no arquivo de log para facilitar a manutenção e gerenciamento de operação e manutenção; o nível de log precisa apenas DEBUGdo nível durante o desenvolvimento , e o log é enviado para o console Talvez seja uma boa escolha.

Se toda vez que você publicar, você tiver que excluir ou substituir o arquivo de configuração, isso causará problemas desnecessários. SpringBoot nos fornece configuração multiambiente para resolver este problema.

Antes de configurar vários ambientes, você precisa entender que o nome do arquivo de configuração em diferentes ambientes é diferente. O nome do arquivo de configuração em diferentes ambientes começa com aplicação, seguido de "-{profile}" para especificar o ambiente correspondente, por exemplo:

  • application-dev.properties: arquivo de configuração do ambiente de desenvolvimento
  • application-prod.properties: arquivo de configuração do ambiente de produção

Os nomes podem ser definidos por eles mesmos, principalmente para distinguir diferentes ambientes. Agora podemos iniciar a configuração multiambiente.

Etapa 1: criar um arquivo de configuração de ambiente responsivo

Crie arquivos de configuração para três ambientes, ou seja, ambiente de desenvolvimento, ambiente de teste e ambiente de produção:

imagem-20220331213903167

Etapa 2: adicionar o ambiente padrão

Se o ambiente padrão não tiver sido especificado, o SpringBoot carregará application.properties por padrão. Se você precisar alternar o ambiente, precisará especificar o arquivo de configuração do ambiente de desenvolvimento em application.properties :

spring.profiles.active=dev

Isso significa que quando o SpringBoot iniciar, carregue o arquivo de configuração application-dev.properties , certifique-se de prestar atenção ao nome do arquivo correspondente!

Agora concluímos a configuração multiambiente!

Reabastecimento

Se o projeto foi empacotado, alternar o ambiente precisa usar o comando de linha de comando para obter:

# 设置启动环境为 dev
java -jar xxx.jar --spring.profiles.active=dev

Acho que você gosta

Origin blog.csdn.net/qq_51439643/article/details/123907772
Recomendado
Clasificación