Spring Boot: ¿Cómo cambiar el puerto de la aplicación?
Introducción
Cuando usas Spring Boot para crear una aplicación web, el puerto por defecto usado por el servidor HTTP embebido es 8080
.
Este es un valor por defecto razonable, pero puede que quieras cambiarlo.
En este consejo breve, te mostraré cómo cambiar el puerto por defecto.
Cómo cambiar el puerto HTTP de Spring Boot usando ficheros de propiedades
La forma más sencilla de cambiar el puerto por defecto es usando la propiedad server.port
en el fichero application.properties
.
Este fichero se encuentra normalmente en el directorio src/main/resources
.
El siguiente ejemplo cambia el puerto a 8082
:
server.port=8082
El mismo procedimiento puede usarse para cambiar el puerto usando el fichero application.yml
:
server:
port: 8082
Cómo cambiar el puerto HTTP de Spring Boot usando variables de entorno
También puedes cambiar el puerto usando la variable de entorno SERVER_PORT
.
El siguiente ejemplo cambia el puerto a 8082
en bash:
SERVER_PORT=8082 java -jar myapp.jar
Cómo cambiar el puerto HTTP de Spring Boot usando la línea de comandos
Puedes cambiar el puerto de la aplicación en tiempo de ejecución usando la propiedad server.port
como propiedad del sistema.
Por ejemplo, si quieres cambiar el puerto a 8082
, puedes usar el siguiente comando para ejecutar la aplicación
java -Dserver.port=8082 -jar myapp.jar
Puedes obtener el mismo resultado pasando el argumento --server.port
:
java -jar myapp.jar --server.port=8082
Cómo cambiar el puerto HTTP de Spring Boot programáticamente
Por último, puedes cambiar el puerto HTTP de Spring Boot programáticamente empleando la interfaz WebServerFactoryCustomizer
.
No obstante, no recomiendo este enfoque ya que el puerto del servidor HTTP es parte de la configuración de la aplicación y no debería estar codificado en el código fuente.
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
import org.springframework.stereotype.Component;
@Component
public class HttpPortCustomizer
implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {
@Override
public void customize(ConfigurableServletWebServerFactory server) {
server.setPort(8082);
}
}
Referencias
Puedes encontrar más información sobre la propiedad server.port
en los siguientes enlaces: