Spring Boot 仍然是最先進的嗎? - ralph

banq發表於2022-01-10

Spring Boot構建可啟動伺服器的原有優勢在當今容器環境時代似乎越來越成為劣勢。您失去了靈活性,並冒著變得非常依賴庫的風險,您作為開發人員無法監督其影響。相比之下,當今的現代應用程式伺服器提供了容器技術的使用,使您能夠在開發過程中使用類似生產的伺服器系統。今天圍繞你的微服務構建一個可啟動的伺服器已經沒有意義了。
 
捆綁庫的危險性最近在 Log4j 錯誤中變得清晰起來。像這樣一個簡單而典型的 Spring Boot 依賴項……

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>


可能導致您的最終應用程式出現安全漏洞。由於 Log4j 庫現在是您構建的一部分。要更新此依賴項,您需要更新程式碼並重建和推出Spring Boot應用程式。
相比之下,在Jakarta EE 中,您永遠不會針對特定實現構建程式碼,而只會針對介面構建程式碼。這意味著您的程式碼以及最終的人工製品永遠不會對特定實現產生硬編碼依賴。在具體示例中,您只需更改執行時環境,無需更新或重建程式碼。這意味著對於像 Kubernetes 這樣的容器環境,您只需更新映象版本並重新啟動容器。
 
Spring Boot構建了一個包含所有必要庫的可引導工件,併為您提供了可引導伺服器。不需要額外的執行時或應用程式伺服器。這使得Spring Boot對開發人員如此有吸引力,並且是Spring Boot成功的最重要概念。但是這個概念是在 7 年多以前引入的。那個時候安裝應用伺服器很痛苦——尤其是對開發人員來說,而使用 Spring Boot,開發人員只需幾個簡單的步驟即可設定簡單微服務的執行版本。
但是,今天我們已經確立了容器環境的概念。每個開發人員都可以使用一個簡單的 Docker 命令啟動任何型別的伺服器或執行時環境。在容器環境中啟動像PayaraWildflyOpenLiberty這樣的現代應用程式伺服器只需幾秒鐘,而部署微服務只需幾秒鐘。例如,要將您的微服務與最新的 Wildfly Docker 映像捆綁在一起,Dockerfile 如下所示:

FROM jboss/wildfly
ADD my-app.war /opt/jboss/wildfly/standalone/deployments/


可以在幾秒鐘內將微服務部署到不同的環境中。這為您的執行時環境提供了更大的靈活性。

相關文章