文章目錄
如何在Spring boot中修改默認端口
介紹
Spring boot為應用程序提供了很多屬性的默認值。但是有時候,我們需要自定義某些屬性,比如:修改內嵌服務器的端口號。
本篇文章就來討論這個問題。
使用Property文件
第一種方式,也是最常用的方式就是在屬性文件中,覆蓋默認的配置。對於服務器的端口來說,該配置就是:server.port。
默認情況下,server.port值是8080。 我們可以在application.properties中這樣修改為8081:
server.port=8081
如果你使用的是application.yml,那么需要這樣配置:
server:
port : 8081
這兩個文件都會在Spring boot啟動的時候被加載。
如果同一個應用程序需要在不同的環境中使用不同的端口,這個時候你就需要使用到Spring Boot的profile概念,不同的profile使用不同的配置文件。
比如你在application-dev.properties中:
server.port=8081
在application-qa.properties 中:
server.port=8082
在程序中指定
我們可以在程序中直接指定應用程序的端口,如下所示:
@SpringBootApplication
public class CustomApplication {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(CustomApplication.class);
app.setDefaultProperties(Collections
.singletonMap("server.port", "8083"));
app.run(args);
}
}
另外一種自定義服務的方法就是實現WebServerFactoryCustomizer接口:
@Component
public class ServerPortCustomizer
implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> {
@Override
public void customize(ConfigurableWebServerFactory factory) {
factory.setPort(8086);
// factory.setAddress("");
}
}
使用ConfigurableWebServerFactory可以自定義包括端口在內的其他很多服務器屬性。
使用命令行參數
如果應用程序被打包成jar,我們也可以在命令行運行時候,手動指定 server.port 。
java -jar spring-5.jar --server.port=8083
或者這樣:
java -jar -Dserver.port=8083 spring-5.jar
值生效的順序
上面我們將了這么多修改自定義端口的方式,那么他們的生效順序是怎么樣的呢?
- 內置的server配置
- 命令行參數
- property文件
- @SpringBootApplication配置的主函數
更多教程請參考 flydean的博客