1. 概述
本教程將討論 Spring Boot 2.5 中新增的一個功能,該功能允許指定系統環境變量的前綴。 這樣,我們可以在相同的環境中運行多個不同的 Spring Boot 應用程序,因為所有屬性都將期望一個帶有前綴的版本。
2. 環境變量前綴
我們可能需要在同一環境中運行多個 Spring Boot 應用程序,並且經常面臨環境變量名稱分配到不同屬性的問題。
我們可以使用 Spring Boot 的 properties,某種程度上它們可以相似,但我們也可能希望在應用程序級別設置一個前綴,以便在環境方面利用它。
讓我們以一個簡單的 Spring Boot 應用程序為例,並通過設置此前綴修改一個應用程序屬性,例如 Tomcat 服務器端口。
2.1. 我們的 Spring Boot 應用程序
讓我們創建一個 Spring Boot 應用程序來演示此功能。首先,讓我們為應用程序添加一個前綴。 我們將其稱為“prefix”以保持簡單:
@SpringBootApplication
public class PrefixApplication {
public static void main(String[] args) {
SpringApplication application = new SpringApplication(PrefixApplication.class);
application.setEnvironmentPrefix("prefix");
application.run(args);
}
}我們不能使用包含下劃線字符(_)作為前綴的單詞。否則應用程序將拋出錯誤。
我們還想創建一個端點來檢查我們的應用程序正在監聽哪個端口:
@Controller
public class PrefixController {
@Autowired
private Environment environment;
@GetMapping("/prefix")
public String getServerPortInfo(final Model model) {
model.addAttribute("serverPort", environment.getProperty("server.port"));
return "prefix";
}
}在這種情況,我們使用 Thymeleaf 來解決我們的模板問題,同時設置服務器端口,內容如下:
<html>
// ...
<body>
It is working as we expected. Your server is running at port : <b th:text="${serverPort}"></b>
</body>
</html>2.2. 設置環境變量
我們可以像設置 <em >prefix_server_port</em> 為例如 8085 這樣的環境變量。 我們可以通過例如在 Linux 中查看如何設置系統環境變量。
設置環境變量後,我們期望應用程序會根據該前綴創建屬性。
如果從 IDE 運行,則需要編輯啓動配置並添加環境變量或從已加載的環境變量中選擇它。
2.3. 運行應用程序
現在我們可以從命令行或您最喜歡的 IDE 中啓動應用程序。
如果通過瀏覽器加載 URL http://localhost:8085/prefix,您可以看到服務器正在運行,並且在您之前設置的端口上使用了前綴。
It is working as we expected. Your server is running at port : 8085如果未進行前綴,應用程序將使用默認的環境變量。
3. 結論
在本教程中,我們學習瞭如何使用前綴來設置環境變量,並結合 Spring Boot 的使用。這在例如,我們想要在同一環境中運行多個 Spring Boot 應用,併為同名屬性(如服務器端口)分配不同值時,會很有幫助。