스프링 부트 애플리케이션 용 포트를 구성하는 방법


796

Spring Boot 애플리케이션이 청취하는 TCP / IP 포트를 구성하여 기본 포트 8080을 사용하지 않는 방법.


5
누군가 관심이 있다면, 여기에 여러 포트를 갖는 방법이 표시됩니다.- stackoverflow.com
— questions

구성에 "yml"파일을 사용하는 경우이 서버를 사용할 수 있습니다. 포트 : 8081 또한 기본 클래스에 "@SpringBootApplication"으로 주석을 달고 @ EnableAutoConfiguration
— Keaz

프로젝트 [application.properties]를 server.port = 8080 추가하세요
— Lahiru Samishka

server.port=8080응용 프로그램 속성에서 설정 합니다. 이 구성은 ServerProperties.class클래스 아래에 org.springframework.boot.autoconfigure.web있습니다.
— Atif

답변:


1226

로이 문서에서 말했다 중 하나를 설정 server.portJVM에 명령 줄 옵션을 사용하여 시스템 속성으로 -Dserver.port=8090또는 추가 application.properties에 /src/main/resources/와

server.port=8090

임의 포트 사용

server.port=0

47
임의의 포트를 사용하면 포트 정보를 얻을 수 있습니다@Value("${local.server.port}")
— azizunsal

42
실제로 명령 행 옵션은 --Dserver.port = 8090이 아닌 --server.port = 8090입니다. docs.spring.io/spring-boot/docs/current/reference/html/…
— Opster ES Ninja-Alper

1
이 답변에 대한 칭찬 : 스프링 문서 에 따르면 다른 경로를 사용할 수 있습니다 application.properties. 제 경우에는 많은 도움이되었습니다.
— sargas

14
-Dserver.port = XXXX가 작동하지 않았습니다. 내가 사용 OS 환경 변수 모드 : $ SERVER_PORT=8090 java -jar <path/to/my/jar>
— Soumya Kanti

10
(1) java -Dserver.port=XXXX -jar <path/to/my/jar>과 (2) 모두 java -jar <path/to/my/jar> --server.port=YYYY작동합니다. 첫 번째 명령은 server.port시스템 속성을 정의 하고 두 번째 명령 String... args은 main메서드 의 명령 줄 인수를 통해 속성을 전달합니다 . 당신이 실행하는 경우 또한 java -Dserver.port=XXXX -jar <path/to/my/jar> --server.port=YYYY, YYYY보다 우선 XXXX봄 부팅 외부화 구성이 너무 매력적인 이유이있다.
— tan9

209

스프링 부트 애플리케이션의 Embedded Tomcat에서 포트를 변경하는 주요 방법은 두 가지가 있습니다.

application.properties 수정

먼저 / resources 폴더에서 application.properties 파일을 시도 할 수 있습니다.

server.port = 8090

application.properties 파일

VM 옵션 수정

두 번째 방법은 파일을 수정하거나 로컬에서만 필요한 것을 체크인하지 않으려면 vm arg를 사용할 수 있습니다.

실행-> 구성 편집-> VM 옵션으로 이동하십시오.

-Dserver.port=8090

vm arg로 포트 변경

또한 자세한 정보가 필요하면 여기에서 다음 블로그 게시물을 볼 수 있습니다 . Spring Boot 응용 프로그램에서 포트 변경


STS 4에서는이 실행에있다 -> 실행 구성 -> 주, 다음 매개 변수 이름과 값을 테이블 아래로 스크롤
— SERV-INC

155

Spring Boot는 (다양한 구현 및 / 또는 객체에 순서대로 연결된 프로세서를 통해) 다양한 구성 외부화 메커니즘을 제공하므로 다음 방법을 통해 jar 아카이브 외부 의 모든 속성을 설정할 수 있습니다 .PropertySourceEnvironment

  1. 명령 줄 인수를 통해 속성을 응용 프로그램 인수로 전달

    java -jar <path/to/my/jar> --server.port=7788
  2. SPRING_APPLICATION_JSON(Spring Boot 1.3.0+)의 속성에서

    • U * IX 쉘에서 환경 변수를 정의하십시오.

      SPRING_APPLICATION_JSON='{"server.port":7788}' java -jar <path/to/my/jar>
    • Java 시스템 특성을 사용하여 다음을 수행하십시오.

      java -Dspring.application.json='{"server.port":7788}' -jar <path/to/my/jar>
    • 명령 행 인수를 전달하십시오.

      java -jar <path/to/my/jar> --spring.application.json='{"server.port":7788}'
  3. JVM 시스템 특성 정의

    java -Dserver.port=7788 -jar <path/to/my/jar>
  4. OS 환경 변수 정의

    • U * IX 쉘

      SERVER_PORT=7788 java -jar <path/to/my/jar>
    • 윈도우

      SET SERVER_PORT=7788
      java -jar <path/to/my/jar>
  5. 구성 파일에 특성 ./config/application.properties 배치

    server.port=7788

    다음을 실행하십시오.

     java -jar <path/to/my/jar>
  6. 에 장소 배치 ./config/application.yaml

    server:
        port: 7788

    다음을 실행하십시오.

     java -jar <path/to/my/jar>
  7. 에 장소 배치 ./application.properties

    server.port=7788

    다음을 실행하십시오.

     java -jar <path/to/my/jar>
  8. 에 장소 배치 ./application.yaml

    server:
        port: 7788

    다음을 실행하십시오.

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

위의 방법을 모두 결합 할 수 있으며 목록의 이전 구성이 후자의 구성보다 우선합니다.

예를 들면 다음과 같습니다.

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

서버가 시작되고 포트 7788에서 수신 대기합니다.

이는 우선 순위가 낮은 PropertySources의 기본 특성 (보통 아카이브에 패키지되거나 소스로 코딩 됨)을 제공 한 다음 런타임 환경에서이를 대체하는 데 매우 유용합니다. Spring Boot의 디자인 철학은 다음과 같습니다.

기본적으로 의견을 제시하되 요구 사항이 기본값에서 벗어나기 시작하면 신속하게 벗어날 수 있습니다.


SERVER_NAME로 server.name변환에 의해 이루어졌다 편안한 바인딩 .


108

또한 프로그래밍 방식으로 포트를 구성 할 수 있습니다

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

이것은 자신의 설정 파일에 포트가 있고 런타임 중에 설정하려고 할 때 유용하며 매우 유용합니다.
— Xdg

4
환경 변수에서 포트를 가져 오기 위해 AWS Elastic Beanstalk 서비스에 애플리케이션을 배포해야 할 때 유용했습니다.
— Martin Hansen

이것은 당신이 원하는 모든 것이 독립된 유닛 또는 통합 테스트 +1 일 때 매우 유용합니다.
— Priidu Neemre

포트의 env 변수가 다른 이름으로 이미 정의되어있을 때 매우 유용합니다.
— higuaro

2
@Configuration대신에 그렇지 @Controller않습니까? 그렇다면 업데이트하십시오.
— Lucky

82

Java 코드로 포트를 설정할 수 있습니다.

HashMap<String, Object> props = new HashMap<>();
props.put("server.port", 9999);

new SpringApplicationBuilder()
    .sources(SampleController.class)                
    .properties(props)
    .run(args);

또는 application.yml에서 :

server:
    port: 9999

또는 application.properties에서 :

server.port=9999

또는 명령 행 매개 변수로 :

-Dserver.port=9999

HashMap 사용은 applications.properties 또는 .yml에 포트가 설정되지 않은 경우에만 작동합니다.
— Milgo

79

로컬로 실행하려면 다음을 사용하십시오.

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

현재 봄 부팅 2.0 , 여기에 명령의 그 작품 (단서가 있었다 여기 )

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

1
Spring Boot 2부터는를 사용해야합니다 spring-boot.run.jvmArguments.
— mapm

54

사용 application.yml하는 경우 다음 줄을 추가하십시오

server:
     port: 9000

물론 임의의 포트의 경우 0입니다.


1
이것은 작동하지 않는 것 같습니다. application.yml에서 server.port를 사용했고 작동했습니다
— yathirigan

47

Spring documentation 에서 설명했듯이 몇 가지 방법이 있습니다.

명령 행에서 포트를 설정하거나 (예 : 8888)

-Dserver.port=8888 또는 --server.port=8888

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

또는 application.properties에서 포트를 설정하십시오.

server.port=${port:4588}

또는 (yaml 구문이있는 application.yml에서)

server:
   port: ${port:4588}

-Dport (또는 -Dserver.port)에 의해 전달 된 포트가 명령 행에 설정되면이 포트가 고려됩니다. 그렇지 않은 경우 기본적으로 포트는 4588입니다.

환경 변수에 관계없이 속성 파일에 포트를 적용하려면 다음과 같이 작성하면됩니다.

server.port=8888


23

프로그래밍 방식으로 수행해야하는 경우 시작하는 동안 설정할 수 있습니다.

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

이것은 환경 종속 포트와 같은 것들에 도움이 될 수 있습니다. 좋은 하루 되세요


2
System.setProperty("server.port", 80);이를 달성하는 또 다른 방법입니다.
— hd1

@ hd1, 나는 주요 답변에 대한 답변을 추가하고 확인하고 원하는대로 수정하십시오
— Luis Mauricio

18

EmbeddedServletContainerFactory구성 내에서 Bean 을 대체 하여 포트를 지정할 수 있습니다 (Java 기반 또는 xml). 사용 된 임베디드 서블릿 컨테이너의 포트를 지정할 수 있습니다. Spring Boot-핵심 "내장 서블릿 컨테이너 지원"단락 및 예제를 참조하십시오 . 도움이 되었기를 바랍니다.



다음은 프로그래밍 방식의 재정의 섹션에 대한 현재 링크입니다. docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/…
— jocull


17

다른 답변을 확장하려면

통합 문서에서 포트를 구성하는 방법을 설명하는 테스트 문서 섹션이 있습니다.


통합 테스트에서 포트 구성은 주석 @SpringBootTest과 webEnvironment값을 사용하여 구성 됩니다.


랜덤 포트 :

@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT)

@LocalServerPort와 동일한 값을 사용하여 값을 주입 할 수 있습니다 @Value("${local.server.port}").

  • 예:

임의 포트 테스트 구성 :

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

정의 된 포트 :

@SpringBootTest(webEnvironment=WebEnvironment.DEFINED_PORT)

server.portif가 정의 된 값을 가져옵니다 .

  • 을 사용하여 정의 된 경우 @TestPropertySource(properties = "server.port=9192")다른 정의 된 값보다 우선합니다.
  • 그렇지 않은 경우 값 src/test/resources/application.properties이 존재합니다 (있는 경우).
  • 마지막으로 정의되어 있지 않으면 default로 시작합니다 8080.

예:

정의 된 포트 테스트 구성 :

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

    @Test
    public void contextLoads() {
    }

}

17

스프링 부트 응용 프로그램이 시작되면 Tomcat과 같은 내장 서버가 기본 포트로 시작됩니다. 임베디드 Tomcat은 기본적으로 8080 포트로 시작합니다. 기본 서버 포트를 변경하는 방법에는 여러 가지가 있습니다.

속성 파일 사용 (.properties / .yml)

속성 파일을 사용하여 서버 포트를 변경하려면 server.port 속성 을 구성해야 합니다.

ㅏ. src \ main \ resources \ application.properties 와 같은 클래스 경로에서 application.properties 사용

server.port = 8585

서버는 8585 포트로 시작합니다. 임의의 서버 포트를 얻으려면 속성에 0을 할당하십시오.

server.port = 0

이제 스프링 부트는 시스템의 어떤 서버에서도 현재 사용하지 않는 포트에서 서버를 시작합니다.

비. src \ main \ resources \ application.yml 과 같은 클래스 경로에서 application.yml 사용

server:
  port: 8585 

서버는 8585 포트로 시작합니다.

임의 포트의 경우 0을 할당하십시오.

server:
  port: 0 

--server.port 또는 -Dserver.port와 함께 java 명령 사용

my-app.jar라는 실행 파일 JAR이 있다고 가정하고 java 명령을 사용하여 스프링 부트 응용 프로그램을 시작하는 동안 다음과 같이 인수를 사용할 수 있습니다.

--server.port 사용

java -jar my-app.jar  --server.port=8585

-Dserver.port 사용

java -jar -Dserver.port=8585 my-app.jar

서버는 8585 포트로 시작합니다.

짧게 --port 또는 -Dport와 함께 java 명령 사용

--server.port와 -Dserver.port를 짧게 만들기 위해 server 키워드를 제거하고 --port 및 -Dport와 같은 짧은 키워드로 만들 수 있습니다. 짧은 키워드를 사용할 수 있습니다. 여기서 우리는 포트를 짧은 키워드로 사용하고 있습니다. 이를 위해서는 속성 파일에서 다음과 같이 자리 표시자를 구성해야합니다.

application.properties 사용

server.port=${port:8282}

application.yml 사용

server:
   port: ${port:8282}

포트를 인수로 전달하지 않으면 기본적으로 서버는 8282로 시작합니다. 다른 포트를 원하면 다음과 같이 인수로 원하는 포트를 전달해야합니다. my-app.jar라는 실행 파일 JAR이 있다고 가정하십시오.

--port 사용

java -jar my-app.jar --port=8585 

-Dport 사용

java -jar -Dport=8585 my-app.jar 

서버는 8585 포트로 시작합니다.

프로그래밍 방식으로 SpringApplication과 함께 SERVER_PORT 사용

SpringApplication에는 스프링 부트 기본 속성을 변경하는 데 사용되는 setDefaultProperties () 메소드가 있습니다. 기본 포트를 변경하고 맵을 작성하고 SERVER_PORT 키를 사용하여 포트를 배치해야한다고 가정하십시오. 예를 찾으십시오.

MyApplication.java

package com.humoyun;

import java.util.HashMap;
import java.util.Map;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication application = new SpringApplication(MyApplication.class);
        Map<String, Object> map = new HashMap<>();
        map.put("SERVER_PORT", "8585");
        application.setDefaultProperties(map);
        application.run(args);
        }     
} 

스프링 부트는 8585 포트로 서버를 시작합니다.


17

사용중인 응용 프로그램 구성 파일에 따라 세 가지 방법이 있습니다.

a) application.properties 파일 세트를 사용중인 경우

server.port = 8090

b) 다음과 같이 application.yml 파일 세트 서버 포트 속성을 YAML 형식으로 사용하는 경우

server:
     port: 8090

c) 기본 방법 에서 속성을 시스템 속성으로 설정할 수도 있습니다

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

15

gradle을 빌드 도구로 사용하는 경우 application.yml 파일 에서 서버 포트를 다음 과 같이 설정할 수 있습니다 .

server:
  port: 8291

maven을 사용하는 경우 포트는 application.properties 파일에서 다음과 같이 설정할 수 있습니다 .

server.port: 8291

application.properties의 경우server.port = 8291
— iQuestProgrammer


13
  1. 모두가 말했듯이 application.properties에서 지정할 수 있습니다.
    server.port = 9000 (다른 값이 될 수 있음)

  2. 프로젝트에서 스프링 액추에이터를 사용하는 경우 기본적으로
    8080을 가리키고 변경하려는 경우 application.properties에서
    management.port = 9001 (다른 값일 수 있음)을 언급하십시오.



12

에서 application.properties파일이 줄을 추가합니다 :

server.port = 65535

그 장소를 어디에 두십시오 :

24.3 응용 프로그램 속성 파일

SpringApplication은 다음 위치에있는 application.properties 파일에서 특성을로드하여 Spring 환경에 추가합니다.

A /config subdirectory of the current directory
The current directory
A classpath /config package
The classpath root

목록은 우선 순위에 따라 정렬됩니다 (목록에서 높은 위치에 정의 된 속성은 낮은 위치에 정의 된 속성보다 우선 함).

제 경우에는 jar파일이 있는 디렉토리에 넣었습니다 .

에서:

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-application-property-files


12

기본적으로 스프링 부트 앱은 기본 포트 8080에서 내장 Tomcat 서버 시작으로 시작합니다. spring은 다음 중 하나를 선택할 수있는 다양한 사용자 정의를 제공합니다.

참고 – server.port = 0을 사용할 수 있습니다. 스프링 부트는 할당되지 않은 http 임의 포트를 찾습니다.

1) application.properties

server.port=2020

2) application.yml

server:  
     port : 2020

3) 프로그래밍 방식으로 서버 포트 변경

3.1) WebServerFactoryCustomizer 인터페이스 구현-Spring 2.x

@Component
public class MyTomcatWebServerCustomizer implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {

    @Override
    public void customize(TomcatServletWebServerFactory factory) {
        // customize the factory here
        factory.setPort(2020);
    }
}

3.2) EmbeddedServletContainerCustomizer 인터페이스 구현-Spring 1.x

@Component
public class CustomizationBean implements EmbeddedServletContainerCustomizer {

    @Override
    public void customize(ConfigurableEmbeddedServletContainer container) {
        // customize here
        container.setPort(2020);
    }
}

4) 명령 행 옵션 사용

 java -jar spring-boot-app.jar -Dserver.port=2020

10

실제로 가장 쉬운 방법은 server.port 속성 을 설정하는 것 입니다.

STS를 IDE로 사용하는 경우 버전 3.6.7부터는 실제로 특성 파일을 열 수있는 스프링 특성 편집기 가 있습니다.

이 편집기는 모든 Spring Boot 속성에 자동 완성 기능을 제공합니다. 포트 를 작성 하고 CTRL + SPACE를 누르면 server.port 가 첫 번째 옵션입니다.


1
또는 Intellij IDEA를 사용하는 경우 자동 완성 기능도 작동합니다. ;)
— Lucky

9

예를 들어 다른 답변에서 언급 한 것처럼 server.port = 8080 속성을 사용하는 것이 확실히 방법입니다. 환경 속성을 노출 할 수도 있다고 언급하고 싶었습니다.

SERVER_PORT=8080

스프링 부트는 "."를 대체 할 수 있기 때문에 최근 버전의 환경 변수의 경우 "_"및 대문자에서 소문자로 표시됩니다. 당신이 꼭 모든 추가 / 편집하지 않고 해당 환경 변수를 정의 곳이 용기에 특히 유용합니다 application.properties명령 줄을 통해 시스템 특성을 나 전달 (예 -Dserver.port=$PORT)


SERVER_PORT=8081 mvn spring-boot:run
— nobar

8

이 하나가 도움이되기를 바랍니다

application.properties => 

server.port = 8090

application.yml => 

섬기는 사람
  포트 : 8090

application.yml => 서버 : 포트 : 8090
— 괴짜

8

application.properties 파일에 포트 번호를 제공하면 문제가 해결됩니다.

 server.port = 8080

"포트는 응용 프로그램을 호스트하려는 선택에 따라 다릅니다"


7

아래 방법으로 포트를 추가 할 수 있습니다.

  1. 실행-> 구성 섹션

  2. 에 application.xml추가server.port=XXXX


1
당신은 의미합니까 application.yml및 IDE 당신은 무엇을 사용하고 있습니까? 구체적으로 작성하십시오.
— Lucky

7

application.properties에서 / src / main / resources / 아래에 설정할 수 있습니다.

server.port = 8090

7

그냥이 application.properties에 src/main/resources프로젝트의 거기 제공

server.port=****

여기서 ****포트 번호를 나타냅니다.


7

1.1 속성 파일을 통한 업데이트

/src/main/resources/application.properties

server.port = 8888

yaml 파일을 통해 업데이트하십시오.

   server:

     port: 8888

EmbeddedServletContainerCustomizer

@Component
public class CustomContainer implements EmbeddedServletContainerCustomizer {

    @Override
    public void customize(ConfigurableEmbeddedServletContainer container) {

        container.setPort(8888);

    }

}

6

SERVER_PORT환경 변수를 사용 하여 스프링 부트 포트를 구성 할 수도 있습니다 . 환경 변수를 설정하고 앱을 다시 시작하십시오.

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

이러한 환경 변수를 시스템 전체에 설정하지 않으면 동일한 세션에서 부트 앱을 실행해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.