日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot之二:部署Spring Boot应用程序方式

發布時間:2025/7/14 javascript 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot之二:部署Spring Boot应用程序方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

衡量多種部署方式

Spring Boot應用程序有多種構建和運行方式,其中一些你已經使用過了。

  • 在IDE中運行應用程序(涉及Spring ToolSuite或IntelliJ IDEA)。
  • 使用Maven的spring-boot:run或Gradle的bootRun,在命令行里運行。
  • 使用Maven或Gradle生成可運行的JAR文件,隨后在命令行中運行。
  • 使用Spring Boot CLI在命令行中運行Groovy腳本。
  • 使用Spring Boot CLI來生成可運行的JAR文件,隨后在命令行中運行。

這些選項每一個都適合運行正在開發的應用程序。但是,如果要將應用程序部署到生產環境 或其他非開發環境中,又該怎么辦呢? 雖然這些選項看起來沒有一個能將應用部署于非開發環境,但事實上,它們之中只有一個選 項不可用于生產環境——在IDE中運行應用顯然不可取。可運行的JAR文件和Spring Boot CLI還是 可以考慮的,兩者還可以很好地將應用程序部署到云環境里。 也許你很想知道如何把Spring Boot應用程序部署到一個更加傳統的應用服務器環境里,比如 Tomcat、WebSphere或WebLogic。在這些情境中,可執行JAR文件和Groovy代碼不適用。針對應 用服務器的部署,你需要將應用程序打包成一個WAR文件。 實際上,Spring Boot應用程序可以用多種方式打包,詳見表8-1。

如你所見,在做終選擇時需要考慮目標環境。如果要將應用程序部署到自己數據中心的 Tomcat服務器上,WAR文件就是你的選擇。另一方面,如果要部署到Cloud Foundry,可以使用 表里列出的各種選項。 本章將關注以下選項。

  • 向Java應用服務器里部署WAR文件。
  • 向Cloud Foundry里部署可執行JAR文件。
  • 向Heroku里部署可執行JAR文件(構建過程是由Heroku執行的)。

探索這些場景的時候,我們還要處理一件事。在開發應用程序時我們使用了嵌入式的H2數 據庫,現在得把它替換成生產環境所需的數據庫了。 首先,讓我們看看如何將閱讀列表應用程序構建為WAR文件。這樣才能把它部署到Java應用 服務器里,比如Tomcat、WebSphere或WebLogic。?

部署到應用服務器

到目前為止,閱讀列表應用程序每次運行,Web應用程序都通過內嵌在應用里的Tomcat提供 服務。情況和傳統Java Web應用程序正好相反。不是應用程序部署在Tomcat里,而是Tomcat部署 在了應用程序里。 歸功于Spring Boot的自動配置功能,我們不需要創建web.xml文件或者Servlet初始化類來聲明Spring MVC的DispatcherServlet。但如果要將應用程序部署到Java應用服務器里,我們就需 要構建WAR文件了。這樣應用服務器才能知道如何運行應用程序。那個WAR文件里還需要一個 對Servlet進行初始化的東西。?

構建WAR文件 實際上,構建WAR文件并不困難。如果你使用Gradle來構建應用程序,只需應用WAR插件 即可:
apply plugin: 'war' 隨后,在build.gradle里用以下war配置替換原來的jar配置:
war { baseName = 'readinglist' version = '0.0.1-SNAPSHOT' } 兩者的唯一區別就是 j 換成了w。

如果使用Maven構建項目,獲取WAR文件會更容易。只需把<packaging>元素的值從jar 改為war。

<packaging>war</packaging>

這樣就能生成WAR文件了。

但如果WAR文件里沒有啟用Spring MVC DispatcherServlet 的web.xml文件或者Servlet初始化類,這個WAR文件就一無是處。 此時就該Spring Boot出馬了。它提供的SpringBootServletInitializer是一個支持 Spring Boot的Spring WebApplicationInitializer實現。除了配置Spring的Dispatcher- Servlet,SpringBootServletInitializer還會在Spring應用程序上下文里查找Filter、 Servlet或ServletContextInitializer類型的Bean,把它們綁定到Servlet容器里。 要使用SpringBootServletInitializer,只需創建一個子類,覆蓋configure()方法 來指定Spring配置類。代碼清單8-1是ReadingListServletInitializer,也就是我們為閱讀列表應用程序寫的SpringBootServletInitializer的子類。

package com.dxz.demo;import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.context.web.SpringBootServletInitializer;public class ReadingListServletInitializer extends SpringBootServletInitializer {@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {return builder.sources(DemoApplication.class); //指定spring配置 }}

如你所見,configure()方法傳入了一個SpringApplicationBuilder參數,并將其作為 結果返回。期間它調用sources()方法注冊了一個Spring配置類。本例只注冊了一個 Application類。回想一下,這個類既是啟動類(帶有main()方法),也是一個Spring配置類。
雖然閱讀列表應用程序里還有其他Spring配置類,但沒有必要在這里把它們全部注冊進來。 Application類上添加了@SpringBootApplication注解。這會隱性開啟組件掃描,而組件掃 描則會發現并應用其他配置類。 現在我們可以構建應用程序了。如果使用Gradle,你只需調用build任務即可:
$ gradle build 沒問題的話,你可以在build/libs里看到一個名為readinglist-0.0.1-SNAPSHOT.war的文件。 對于基于Maven的項目,可以使用package:
$ mvn package 成功構建之后,你可以在target目錄里找到WAR文件。 剩下的工作就是部署應用程序了。應用服務器不同,部署過程會有所區別,因此請參考應用 服務器的部署說明文檔。

對于Tomcat而言,可以把WAR文件復制到Tomcat的webapps目錄里。如果Tomcat正在運行(要 是沒有運行,則在下次啟動時檢測),則會檢測到WAR文件,解壓并進行安裝。 假設你沒有在部署前重命名WAR文件, Servlet上下文路徑會與WAR文件的主文件名相同, 在本例中是/demo-0.0.1-SNAPSHOT。用你的瀏覽器打開http://server:port/demo-0.0.1-SNAPSHOT就能訪問應用程序了。?

?

還有一點值得注意:就算我們在構建的是WAR文件,這個文件仍舊可以脫離應用服務器直 接運行。如果你沒有刪除Application里的main()方法,構建過程生成的WAR文件仍可直接運 行,一如可執行的JAR文件:?

E:\myspace\demo\target>java -jar demo-0.0.1-SNAPSHOT.war

?

總結

以上是生活随笔為你收集整理的SpringBoot之二:部署Spring Boot应用程序方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。