Como alterar a porta padrão no Spring Boot
1. Introdução
O Spring Boot fornece padrões sensíveis para muitas propriedades de configuração. Ainda assim, às vezes precisamos personalizá-los com nossos valores específicos de caso.
Um caso de uso comum échanging the default port for the embedded server.
Neste tutorial rápido, cobriremos várias maneiras de fazer isso.
Leitura adicional:
Propriedades com Spring e Spring Boot
Tutorial de como trabalhar com arquivos de propriedades e valores de propriedades no Spring.
Caminho de contexto de alteração de inicialização da Primavera
Aprenda várias maneiras de alterar o caminho de contexto no seu aplicativo Spring Boot
2. Usando arquivos de propriedade
A maneira mais rápida e fácil de personalizar o Spring Boot é substituindo os valores das propriedades padrão.
Para a porta do servidor, a propriedade que queremos alterar éserver.port.
Por padrão, o servidor incorporado inicia na porta 8080. Let’s see how we can provide a different value in an application.properties file:
server.port=8081
Agora o servidor iniciará na porta 8081.
Da mesma forma, podemos fazer o mesmo se estivermos usando um arquivoapplication.yml:
server:
port : 8081
Ambos os arquivos são carregados automaticamente pelo Spring Boot se colocados no diretóriosrc/main/resources de um aplicativo Maven.
2.1. Portas específicas do ambiente
Se tivermos um aplicativo implantado em ambientes diferentes, podemos querer que ele seja executado em portas diferentes em cada sistema.
Podemos conseguir isso facilmente, combinando a abordagem dos arquivos de propriedades com os perfis do Spring. Specifically, we can create a property file for each environment.
Por exemplo, teremos um arquivoapplication-dev.properties com o conteúdo:
server.port=8081
Em seguida, adicionaremos outro arquivoapplication-qa.properties com uma porta diferente:
server.port=8082
A configuração dos arquivos de propriedades deve ser suficiente para a maioria dos casos.
No entanto, existem outras opções para esse objetivo, então vamos explorá-las também.
3. Configuração programática
Podemos configurar a porta programaticamente, definindo a propriedade específica ao iniciar o aplicativo ou personalizando a configuração do servidor incorporado.
Primeiro, vamos ver como definir a propriedade na classe@SpringBootApplication principal:
@SpringBootApplication
public class CustomApplication {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(CustomApplication.class);
app.setDefaultProperties(Collections
.singletonMap("server.port", "8083"));
app.run(args);
}
}
Em seguida, para personalizar a configuração do servidor, temos que implementar a interfaceWebServerFactoryCustomizer:
@Component
public class ServerPortCustomizer
implements WebServerFactoryCustomizer {
@Override
public void customize(ConfigurableWebServerFactory factory) {
factory.setPort(8086);
}
}
Observe que isso se aplica à versão Spring Boot 2.x.
Para Spring Boot 1.x, podemos implementar de forma semelhante a interfaceEmbeddedServletContainerCustomizer.
4. Usando argumentos de linha de comando
Ao empacotar e executar nosso aplicativo como um jar, podemos definir o argumentoserver.port com o comandojava:
java -jar spring-5.jar --server.port=8083
Ou usando a sintaxe equivalente:
java -jar -Dserver.port=8083 spring-5.jar
5. Ordem de Avaliação
Como uma nota final, vamos dar uma olhada na ordem em que essas abordagens são avaliadas pelo Spring Boot.
Basicamente, a prioridade das configurações é:
-
configuração do servidor incorporado
-
argumentos da linha de comando
-
arquivos de propriedades
-
configuração principal de@SpringBootApplication
6. Conclusão
Neste tutorial rápido, vimos como configurar a porta do servidor em um aplicativo Spring Boot.
O código-fonte dos exemplos está disponívelover on GitHub.