讀古今文學網 > Spring Boot實戰 > A.3 遠程開發 >

A.3 遠程開發

在遠程運行應用程序時(比如部署到服務器上或雲上),開發者工具的自動重啟和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"

  

遠程應用程序啟動後,會和本地調試服務器建立一個連接。你可以設置斷點,一步步執行遠程應用程序裡的代碼,就好像它們運行在本地一樣(出於網絡原因,速度會有點慢)。