spring-boot自定義啟動端口


有時候我們可能需要啟動不止一個SpringBoot,而SpringBoot默認的端口號是8080,所以這時候我們就需要修改SpringBoot的默認端口了。修改SpringBoot的默認端口有兩種方式。下面就分別說一下這兩種方式。

修改application.properties

第一種方式我們只需要在application.properties中加這樣的一句話就可以了:server.port=8004。為什么這種方式可以實現修改SpringBoot的默認端口呢?因為在SpringBoot中有這樣的一個類:ServerProperties。我們可以大致看一下這個類:

 

@ConfigurationProperties(prefix = "server", ignoreUnknownFields = true)  
public class ServerProperties  
        implements EmbeddedServletContainerCustomizer, EnvironmentAware, Ordered {  
  
    /** 
     * Server HTTP port. 
     */  
    private Integer port; 

  

在這個類里有一個@ConfigurationProperties注解,這個注解會讀取SpringBoot的默認配置文件application.properties的值注入到bean里。這里定義了一個server的前綴和一個port字段,所以在SpringBoot啟動的時候會從application.properties讀取到server.port的值。我們接着往下看一下:

@Override  
public void customize(ConfigurableEmbeddedServletContainer container) {  
    if (getPort() != null) {  
        container.setPort(getPort());  
    }  

 

這里有一個customize的方法,這個方法里會給SpringBoot設置讀取到的端口號。

 可是當我們要同時啟動2個springboot工程時,就會有問題,有可能會因為8080端口被第一個應用占用而導致第二個應用無法啟動,這時就需要修改其中一個工程的啟動端口

繼承SpringBootServletInitializer 實現EmbeddedServletContainerCustomizer

我們在上面看到了端口號是在customize這個方法中設置的,而這個方法是在EmbeddedServletContainerCustomizer這個接口中的,所以我們可以實現這個接口,來更改SpringBoot的默認端口號。具體代碼如下:

 
             

@SpringBootApplication
public class SpringbootApplication extends SpringBootServletInitializer implements EmbeddedServletContainerCustomizer{

  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    return builder.sources(SpringbootApplication.class);
  }

  public static void main(String[] args) {
    SpringApplication.run(SpringbootApplication.class, args);
  }

 
             

  @Override
  public void customize(ConfigurableEmbeddedServletContainer container) {
    container.setPort(8081);
  }
}

 
            
然后你在啟動SpringBoot的時候,發現端口號被改成了8003.

使用命令行參數

如果你只是想在啟動的時候修改一次端口號的話,可以用命令行參數來修改端口號。配置如下:java -jar 打包之后的SpringBoot.jar  --server.port=8000

使用虛擬機參數

你同樣也可以把修改端口號的配置放到JVM參數里。配置如下:-Dserver.port=8009。 這樣啟動的端口號就被修改為8009了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM