java - yml - spring boot tomcat port configuration




Cómo configurar el puerto para una aplicación Spring Boot (20)

¿Cómo configuro el puerto TCP / IP escuchado por una aplicación Spring Boot, para que no use el puerto predeterminado de 8080?


  1. Como todos dijeron, puede especificar en application.properties
    server.port = 9000 (podría ser cualquier otro valor)

  2. Si está utilizando un actuador de resorte en su proyecto, por defecto apunta a
    8080, y si desea cambiarlo, en application.properties mencione
    management.port = 9001 (podría ser cualquier otro valor)


1.1 Actualización a través de un archivo de propiedades.

/src/main/resources/application.properties

server.port = 8888

Actualización a través de un archivo yaml.

   server:

     port: 8888

EmbeddedServletContainerCustomizer

@Component
public class CustomContainer implements EmbeddedServletContainerCustomizer {

    @Override
    public void customize(ConfigurableEmbeddedServletContainer container) {

        container.setPort(8888);

    }

}

Como se explica en la documentación de Spring , hay varias formas de hacerlo:

Puede establecer el puerto en la línea de comando (por ejemplo, 8888)

-Dserver.port=8888 o --server.port=8888

Ejemplo: java -jar -Dserver.port=8888 test.jar

O configura el puerto en la application.properties

server.port=${port:4588}

o (en application.yml con sintaxis yaml)

server:
   port: ${port:4588}

Si el puerto pasado por -Dport (o -Dserver.port) se establece en la línea de comandos, este puerto se tendrá en cuenta. Si no, entonces el puerto será 4588 por defecto.

Si desea imponer el puerto en el archivo de propiedades independientemente de la variable de entorno, solo tiene que escribir:

server.port=8888

Cuando necesite una forma programática de hacerlo, puede configurarlo durante el inicio:

System.getProperties().put( "server.port", 80 );
SpringApplication.run(App.class, args);

Esto podría ayudar a cosas como el puerto dependiente del entorno. Que tengas un buen día


Dado que Spring Boot proporciona varios mecanismos de externalización de configuración (a través de varias implementaciones y / o procesadores de PropertySource conectados al objeto de Environment en orden), puede establecer cualquier propiedad fuera de su archivo jar a través de los siguientes métodos:

  1. Pasar propiedad a través de argumento de línea de comando como argumento de aplicación

    java -jar <path/to/my/jar> --server.port=7788
    
  2. Desde la propiedad en SPRING_APPLICATION_JSON (Spring Boot 1.3.0+)

    • Defina la variable de entorno en el shell U * IX:

      SPRING_APPLICATION_JSON='{"server.port":7788}' java -jar <path/to/my/jar>
      
    • Mediante el uso de la propiedad del sistema Java:

      java -Dspring.application.json='{"server.port":7788}' -jar <path/to/my/jar>
      
    • Pasar a través del argumento de la línea de comando:

      java -jar <path/to/my/jar> --spring.application.json='{"server.port":7788}'
      
  3. Definir la propiedad del sistema JVM

    java -Dserver.port=7788 -jar <path/to/my/jar>
    
  4. Definir variable de entorno OS

    • U * IX Shell

      SERVER_PORT=7788 java -jar <path/to/my/jar>
      
    • Windows

      SET SERVER_PORT=7788
      java -jar <path/to/my/jar>
      
  5. Coloque la propiedad en el archivo de configuración ./config/application.properties

    server.port=7788
    

    y correr:

     java -jar <path/to/my/jar>
    
  6. Coloque la propiedad en ./config/application.yaml

    server:
        port: 7788
    

    y correr:

     java -jar <path/to/my/jar>
    
  7. Coloque la propiedad en ./application.properties

    server.port=7788
    

    y correr:

     java -jar <path/to/my/jar>
    
  8. Coloque la propiedad en ./application.yaml

    server:
        port: 7788
    

    y correr:

     java -jar <path/to/my/jar>
    

Puede combinar todos los métodos anteriores, y la configuración anterior en la lista tiene prioridad sobre la última.

Por ejemplo:

SERVER_PORT=2266 java -Dserver.port=5566 -jar <path/to/my/jar> --server.port=7788

El servidor se iniciará y escuchará en el puerto 7788.

Esto es muy útil al proporcionar propiedades predeterminadas en PropertySources con menor prioridad (y normalmente empaquetadas en el archivo o codificadas en la fuente), y luego anularlas en el entorno de ejecución. Y es la filosofía de diseño de Spring Boot:

Sea considerado fuera de la caja, pero salga del camino rápidamente ya que los requisitos comienzan a diferir de los valores predeterminados.

SERVER_NAME conversión de SERVER_NAME a server.name se realizó mediante enlace relajado .


De hecho, la forma más sencilla es establecer la propiedad server.port .

Si está utilizando STS como IDE, desde la versión 3.6.7 tiene el Editor de propiedades de Spring para abrir el archivo de propiedades.

Este editor proporciona autocompletar para todas las propiedades de Spring Boot. Si escribe puerto y pulsa CTRL + ESPACIO, server.port será la primera opción.


El uso de la propiedad server.port = 8080, por ejemplo, como se menciona en otras respuestas, es definitivamente un camino a seguir. Solo quería mencionar que también podría exponer una propiedad de entorno:

SERVER_PORT=8080

Desde la bota de primavera es capaz de reemplazar "." para "_" e inferior al caso SUPERIOR para variables de entorno en versiones recientes. Esto es especialmente útil en contenedores donde todo lo que tienes que hacer es definir esa variable de entorno sin agregar / editar application.properties o pasar las propiedades del sistema a través de la línea de comandos (es decir, -Dserver.port=$PORT )


En caso de que esté utilizando application.yml añada las siguientes líneas

server:
     port: 9000

y por supuesto 0 para puerto aleatorio.


Espero que esta ayuda

application.properties=> 

server.port=8090

application.yml=> 

server
  port:8090

Esta pregunta es el primer resultado si buscas en Google para Gradle Spring Port .

Si usa gradle, puede hacer algo como esto si ya tiene el complemento Spring Boot Gradle:

bootRun {
    args += ["--server.port=[PORT]"]
}

Para una respuesta más sofisticada, por favor vea mi respuesta here .



Hay tres formas de hacerlo.

1 Establecer la propiedad server.port en el archivo application.properties

server.port = 8090

2 Establecer la propiedad del puerto del servidor en el archivo application.yml

server:
     port: 8090

3 Establecer la propiedad como propiedad del sistema en el método main

System.setProperty("server.port","8090");

Para extender otras respuestas:

Hay una sección en la documentación para pruebas que explica cómo configurar el puerto en las pruebas de integración:

En las pruebas de integración, la configuración del puerto se realiza mediante la anotación @SpringBootTest y los valores de webEnvironment .

Puerto aleatorio:

@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT)

Puede inyectar el valor utilizando @LocalServerPort que es lo mismo que @Value("${local.server.port}") .

  • Ejemplo:

Configuración de prueba de puerto aleatorio:

@RunWith(SpringRunner.class
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class ExampleTest {
   ...
   @LocalServerPort //to inject port value
   int port;
}

Puerto definido:

@SpringBootTest(webEnvironment=WebEnvironment.DEFINED_PORT)

Toma el valor de server.port si está definido.

  • Si se define utilizando @TestPropertySource(properties = "server.port=9192") , reemplaza otros valores definidos.
  • Si no, toma el valor de src/test/resources/application.properties (si existe).
  • Y finalmente, si no está definido, comienza con el 8080 predeterminado.

Ejemplo:

Configuración de prueba de puerto definida:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
@TestPropertySource(properties = "server.port=9192")
public class DemoApplicationTests {

    @Test
    public void contextLoads() {
    }

}

Principalmente, springboot se ejecuta en el port:8080 debido a Tomcat integrado. En algunos puede lanzar un port 8080 already in use error port 8080 already in use . Para evitar este tipo de problemas podemos configurar el puerto del servidor.

Usando application.properties

agregar server.port=9898

En la configuración de tiempo de ejecución

ejecute su aplicación con los siguientes argumentos.

spring-boot:run -Drun.jvmArguments='-Dserver.port=8081'


Puede especificar puerto anulando el bean EmbeddedServletContainerFactory dentro de su configuración (basado en java o xml). Allí puede especificar el puerto para el contenedor de servlet incorporado. Por favor, vea el párrafo " Spring Boot - Core " Embedded Servlet Container Support "y el ejemplo allí. Espero que esto ayude.


Puedes agregar el puerto en los siguientes métodos.

  1. Ejecutar -> sección Configuraciones

  2. En application.xml agrega server.port=XXXX


Si desea ejecutarlo localmente, use esto -

mvn spring-boot:run -Drun.jvmArguments='-Dserver.port=8085'

A partir de Spring Boot 2.0 , aquí está el comando que funciona (las pistas estaban here ):

mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8085

Si está trabajando en proyectos de arranque y desea configurar el puerto, puede ingresar la entrada en el archivo application.properties como NOTA: el archivo de propiedades debe estar bajo src / main / resource

Propiedades de primavera

server.port = 9999 Si usa el CMD, siga este comando -Dserver.port = 9999 Para el puerto predeterminado, su server.port = 0 Asegúrese de que ningún puerto esté usando este número de puerto


También puede usar la variable de entorno SERVER_PORT para configurar el puerto Spring Boot. Solo establece la variable de entorno y reinicia la aplicación:

set SERVER_PORT=9999 // on windows machine
export SERVER_PORT=9999 // on linux

Tenga en cuenta que si no configura esas variables de entorno en todo el sistema, debe ejecutar la aplicación de arranque en la misma sesión.


También, puede configurar el puerto programáticamente

@Configuration
public class ServletConfig {
    @Bean
    public EmbeddedServletContainerCustomizer containerCustomizer() {
        return (container -> {
            container.setPort(8012);
        });
    }
}




spring-boot