在遠程運行應用程序時(比如部署到服務器上或雲上),開發者工具的自動重啟和LiveReload特性都是可選的。此外,Spring Boot開發者工具還能遠程調試Spring Boot應用程序。
在傳統的開發過程中,你不會打開遠程開發功能,因為這會影響性能。但在一些特殊的場景中,此類工具就很有用。比如,出於開發目的,所開發的應用程序部署在非生產環境裡。如果應用程序不是在本地開發環境裡,而是在雲端部署,則尤其如此。
你必須設置一個遠程安全碼來開啟遠程開發功能:
spring:
devtools:
remote:
secret: myappsecret
有了這個屬性後,運行中的應用程序就會啟動一個服務器組件以支持遠程開發。它會監聽接受變更的請求,可以重啟應用程序或者觸發瀏覽器刷新。
為了使用這個遠程服務器,你需要在本地運行遠程開發工具的客戶端。這個遠程客戶端是一個類,全限定類名是org.springframework.boot.devtools.RemoteSpringApplication
。它會運行在IDE裡,要求提供一個參數,告知遠程應用程序部署在哪裡。
例如,假設你正遠程運行閱讀列表應用程序,部署在Cloud Foundry上,地址是https://readinglist.cfapps.io。如果你正在使用Eclipse或Spring ToolSuite,可以通過如下步驟開啟遠程客戶端。
(1) 選擇Run > Run Configurations菜單項。
(2) 創建一個新的Java Application運行配置。
(3) 在Project裡選中Reading List項目(可以鍵入項目名或者點擊Browse按鈕找到這個項目,見圖A-1)。
(4) 在Main Class裡鍵入org.springframework.boot.devtools.RemoteSpringApplication
(見圖A-1)。
圖 A-1 RemoteSpringApplication
是遠程開發者工具客戶端
(5) 切換到Arguments標籤頁,在Program Arguments裡鍵入https://readinglist.cfapps.io
(見圖A-2)。
圖 A-2 RemoteSpringApplication
將遠程應用程序的URL作為參數
客戶端啟動後,就可以在IDE裡修改應用程序了。在檢測到變動後,這些修改點會被推送到遠端並加以應用。如果修改的內容涉及呈現的Web資源(比如樣式表或JavaScript),LiveReload還會觸發瀏覽器刷新。
遠程客戶端還會開啟基於HTTP的遠程調試通道,這樣就能在IDE裡調試部署在遠程的應用程序了。你要做的就是確保遠程應用程序打開了遠程調試功能。這通常可以通過配置JAVA_OPTS
來實現。
比方說,你的應用程序部署在Cloud Foundry上,可以像下面這樣在應用程序的manifest.yml裡設置JAVA_OPTS
。
---
env:
JAVA_OPTS: "-Xdebug -Xrunjdwp:server=y,transport=dt_socket,suspend=n"
遠程應用程序啟動後,會和本地調試服務器建立一個連接。你可以設置斷點,一步步執行遠程應用程序裡的代碼,就好像它們運行在本地一樣(出於網絡原因,速度會有點慢)。