在 IntelliJ 中執行多個 Spring Boot 實例
1. 引言
在本簡短教學中,我們將看到在 IntelliJ IDEA 中執行多個 Spring Boot 執行個體的兩種實用方法。
在本地開發和測試期間,運行同一應用程式的多個實例非常有用。典型的用例包括驗證不同的配置設定或模擬不同服務之間的互動。
2. 使用命令列參數
Spring Boot 讓我們在應用程式啟動時透過命令列參數覆寫配置屬性。在本例中,我們可以透過設定server.port決定了嵌入式伺服器執行的連接埠。
要運行多個實例,我們可以在 IntelliJ 中建立多個運行配置,並分別進行相應的配置。
首先,我們進入Run -> Edit Configurations,建立一個新配置,並設定常用選項,例如主運行程式類別、Java 版本和工作目錄。
然後我們導航到Program arguments字段,並使用–server.port=8081屬性定義連接埠:
作業系統要求連接埠和進程之間必須有唯一的一一對應關係,這意味著我們不能在同一個連接埠上執行多個應用程式。也就是說,下一步是複製該配置,並為其分配一個不同的連接埠作為參數–server.port=8082 。
在運行之前,我們先建立一個簡單的 REST 端點,用於驗證應用程式是否已啟動並正在執行:
@RestController
@RequestMapping("/multiple-instance")
public class MultipleInstanceController {
@Value("${server.port}")
private String port;
@GetMapping("/ping")
public ResponseEntity<String> ping() {
return ResponseEntity.ok("Instance is up and running on port " + port);
}
}
最後,我們將分別在各自的連接埠上啟動兩個 IntelliJ 配置:
此時,我們應該在不同的連接埠上運行著同一個應用程式的兩個實例。讓我們透過向每個連接埠發送簡單的 curl ping 請求來確認這一點:
apelanovic@Aleksandars-MacBook-Pro spring-boot-runtime-2 % curl localhost:8081/multiple-instance/ping
Instance is up and running on port 8081%
apelanovic@Aleksandars-MacBook-Pro spring-boot-runtime-2 % curl localhost:8082/multiple-instance/ping
Instance is up and running on port 8082%
3. 使用 Spring Profiles
雖然命令列參數適用於簡單的場景,但 Spring Profiles 提供了一種更結構化的方法來管理多個實例。
Spring Profiles 允許我們將配置屬性分組,並在運行時根據需要啟動它們。我們無需直接傳遞連接埠號碼作為參數,而是可以定義特定於 profile 的設定檔。也就是說,讓我們在src/main/resources目錄下建立兩個屬性檔案:
application-instance1.properties
application-instance2.properties
現在,我們可以在每個檔案中分配不同的端口,例如server.port=8083 and server.port=8084.
之後,我們建立兩個與之前類似的 IntelliJ 配置。這次,我們不再指定–server.port ,而是啟動一個特定的設定檔。這可以透過參數或 VM 選項來實現,兩者都會啟用選定的設定檔。
在這個例子中,我們將使用虛擬機器選項:
運行後,日誌確認應用程式正在指定的連接埠上使用選定的設定檔執行:
2026-02-27T20:40:23,695 INFO [main] osbSpringApplication: The following 1 profile is active: "instance1"
2026-02-27T20:40:24,426 INFO [main] osbwetTomcatWebServer: Tomcat initialized with port 8083 (http)
為確保一切正常運行,可以像以前一樣透過向每個連接埠發送curl請求來檢查應用程式:
apelanovic@Aleksandars-MacBook-Pro spring-boot-runtime-2 % curl localhost:8083/multiple-instance/ping
Instance is up and running on port 8083%
apelanovic@Aleksandars-MacBook-Pro spring-boot-runtime-2 % curl localhost:8084/multiple-instance/ping
Instance is up and running on port 8084%
4. 結論
在本文中,我們探討了在 IntelliJ IDEA 中執行多個 Spring Boot 執行個體的兩種簡單方法。
當只需要更改少量屬性(例如伺服器連接埠)時,使用命令列參數是快速簡單的解決方案。另一方面,當實例需要更複雜的配置差異時,Spring Profiles 提供了更強大的方法。
與往常一樣,完整的程式碼範例可在 GitHub 上找到。