1. 程式人生 > >SpringBoot修改默認端口號

SpringBoot修改默認端口號

有時 res lds fig article override comment env 註解

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

修改application.properties

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

[java] view plain copy
  1. @ConfigurationProperties(prefix = "server", ignoreUnknownFields = true)
  2. public class ServerProperties
  3. implements EmbeddedServletContainerCustomizer, EnvironmentAware, Ordered {
  4. /**
  5. * Server HTTP port.
  6. */
  7. private Integer port;

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

[java] view plain copy
  1. @Override
  2. public void customize(ConfigurableEmbeddedServletContainer container) {
  3. if (getPort() != null) {
  4. container.setPort(getPort());
  5. }

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

實現EmbeddedServletContainerCustomizer

我們在上面看到了端口號是在customize這個方法中設置的,而這個方法是在EmbeddedServletContainerCustomizer這個接口中的,所以我們可以實現這個接口,來更改SpringBoot的默認端口號。具體代碼如下: [java]
view plain copy
  1. @RestController
  2. @EnableAutoConfiguration
  3. @ComponentScan
  4. public class FirstExample implements EmbeddedServletContainerCustomizer {
  5. @RequestMapping("/first.do")
  6. String home() {
  7. return "Hello World!世界你好!O(∩_∩)O哈哈~!!!我不是太很好!";
  8. }
  9. public static void main(String[] args) {
  10. SpringApplication.run(FirstExample.class, args);
  11. }
  12. @Override
  13. public void customize(ConfigurableEmbeddedServletContainer configurableEmbeddedServletContainer) {
  14. configurableEmbeddedServletContainer.setPort(8003);
  15. }
  16. }
然後你在啟動SpringBoot的時候,發現端口號被改成了8003.

使用命令行參數

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

使用虛擬機參數

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

SpringBoot修改默認端口號