Caminho de contexto de alteração de inicialização da Primavera
1. Visão geral
Spring Boot, by default,serves content on the root context path (“/”).
E embora, geralmente, seja uma boa ideia preferir a convenção à configuração, há casos em que queremos ter um caminho personalizado.
Neste tutorial rápido, cobriremos as diferentes maneiras de configurá-lo.
2. Definir a propriedade
Assim como muitas outras opções de configuração, o caminho de contexto no Spring Boot pode ser alterado definindo uma propriedade, ou seja,server.servlet.context-path.
Observe que isso funciona para o Spring Boot 2.x.
Para Boot 1.x, a propriedade éserver.context-path.
Existem várias maneiras de definir essa propriedade, vamos dar uma olhada nelas uma por uma.
2.1. Usandoapplication.properties /yml
A maneira mais direta de alterar o caminho do contexto é definir a propriedade no arquivoapplication.properties /yml:
server.servlet.context-path=/example
Em vez de colocar o arquivo de propriedades emsrc/main/resources, também podemos mantê-lo no diretório de trabalho atual (fora do classpath).
2.2. Propriedade do sistema Java
Também podemos definir o caminho do contexto como uma propriedade do sistema Java antes mesmo que o contexto seja inicializado:
public static void main(String[] args) {
System.setProperty("server.servlet.context-path", "/example");
SpringApplication.run(Application.class, args);
}
2.3. Variável de ambiente do sistema operacional
O Spring Boot também pode contar com variáveis de ambiente do SO. Em sistemas baseados em Unix, podemos escrever:
$ export SERVER_SERVLET_CONTEXT_PATH=/example
No Windows, o comando para definir uma variável de ambiente é:
> set SERVER_SERVLET_CONTEXT_PATH=/example
Oabove environment variable is for Spring Boot 2.x.x,If we have 1.x.x, a variável éSERVER_CONTEXT_PATH.
2.4. Argumentos da linha de comando
Também podemos definir as propriedades dinamicamente por meio de argumentos da linha de comando:
$ java -jar app.jar --server.servlet.context-path=/example
3. Usando Java Config
Agora vamos definir o caminho do contexto, populando a fábrica de feijão com um bean de configuração.
Com Spring Boot 2, podemos usarWebServerFactoryCustomizer:
@Bean
public WebServerFactoryCustomizer
webServerFactoryCustomizer() {
return factory -> factory.setContextPath("/example");
}
Com Spring Boot 1, podemos criar uma instância deEmbeddedServletContainerCustomizer:
@Bean
public EmbeddedServletContainerCustomizer
embeddedServletContainerCustomizer() {
return container -> container.setContextPath("/example");
}
4. Ordem prioritária de configurações
Com tantas opções, podemos ter mais de uma configuração para a mesma propriedade.
Aqui está opriority order in descending order, que Spring Boot usa para selecionar a configuração efetiva:
-
Configuração Java
-
Argumentos da linha de comando
-
Propriedades do sistema Java
-
Variáveis de ambiente do SO
-
application.properties no diretório atual
-
application.properties no caminho de classe (src/main/resources ou o arquivo jar empacotado)
5. Conclusão
Neste artigo, abordamos rapidamente diferentes maneiras de definir o caminho do contexto, ou qualquer outra propriedade de configuração, em um aplicativo Spring Boot.