本系列文章演示如何用JHipster生成一個微服務架構風格的應用棧。
環境需求:安裝好JHipster開發環境的CentOS 7.4(參考這裏)
應用棧名稱:appstack
認證微服務: uaa
業務微服務:microservice1
網關微服務:gateway
實體名:role
主機IP:192.168.220.120html
進入appstack/gateway目錄,輸入命令後回車:前端
$ cd gateway/ $ jhipster
選擇生成的應用類型
這是一個單選題,有4個選項,使用上下鍵切換選項。
這裏選擇Microservice gateway
,也就是網關微服務。java
單擊回車繼續。mysql
輸入應用的名稱
默認名稱是當前目錄名gateway
,也能夠本身輸入名稱;這裏使用默認名稱。
注意:名稱只能是大小寫字母,數字和下劃線的任意組合,不容許任何其它字符。webpack
單擊回車繼續。git
輸入微服務的端口號
默認端口號是8080
,也能夠本身輸入端口號,注意不要和別的微服務和進程的端口號衝突。github
單擊回車繼續。web
輸入應用的java包名
默認java包名是com.mycompany.myapp
,也能夠本身輸入包名;這裏使用默認包名。
注意:包名要符合Java標準規範的要求。spring
單擊回車繼續。sql
選擇一個服務發現組件
這是一個單選題,有3個選項,使用上下鍵切換選項。
根據微服務體系規劃,這裏選擇JHipster Registry
。
單擊回車繼續。
選擇使用的認證類型
這是一個單選題,有3個選項,使用上下鍵切換選項。
根據微服務體系規劃,這裏選擇Authentication with JHipster UAA server (the server must be generated separately)
。
單擊回車繼續。
輸入uaa微服務所在的目錄
這是一個相對於gateway的相對路徑,默認路徑是../uaa
,這就是咱們以前生成uaa工程的目錄所在;若是以前生成的uaa目錄名是myuaa,那麼這裏要輸入../myuaa
。
注意:這個問題和上一個問題(1.6)的選擇有關聯性,上一個問題的不一樣選擇,會致使後續不一樣問題的出現。
單擊回車繼續。
選擇使用的數據庫類型
這是一個單選題,有4個選項,使用上下鍵切換選項。
能夠看到支持的數據庫類型不少,這裏選擇默認選項SQL
。
單擊回車繼續。
選擇生產環境中使用的數據庫
這是一個單選題,有5個選項,使用上下鍵切換選項。
能夠看到目前支持5種SQL數據庫,這裏選擇默認選項MySQL
。
單擊回車繼續。
選擇開發環境中使用的數據庫
這是一個單選題,有3個選項,使用上下鍵切換選項。
H2調試起來簡單,但爲了和生產環境保持一致性,這裏選擇MySQL
。
單擊回車繼續。
是否須要使用Hibernate 2級緩存?
默認選擇是Y
,若是不須要,輸入n
;這裏選擇默認選項Y
。
單擊回車繼續。
選擇使用Maven仍是Gradle來構建微服務
這是一個單選題,有2個選項,使用上下鍵切換選項。
根據本身的開發環境須要,選擇相應的構建工具,這裏選擇默認選項Maven
。
單擊回車繼續。
選擇須要用到的技術組件
這是一個多選題,有4個選項,使用上下鍵切換選項,使用空格鍵選中選項,使用a鍵全選,使用i鍵取消全選。
根據本身的技術架構規劃,選擇相應的技術組件,也能夠都不選擇。
單擊回車繼續。
選擇前端框架
這是一個單選題,有2個選項,使用上下鍵切換選項。
根據本身的技術架構規劃,選擇相應的前端框架,這裏選擇默認選項Angular 6
。
單擊回車繼續。
是否須要啓用樣式表預處理來支持SASS?
默認選擇是N
,若是須要啓用,輸入y
;這裏選擇默認選項N
。
單擊回車繼續。
是否須要國際化支持?
默認選擇是Y
,若是不須要,輸入n
;這裏選擇默認選項Y
。
單擊回車繼續。
選擇國際化支持中的母語
這是一個單選題,有37個選項,使用上下鍵切換選項。
注意:這個問題和上一個問題(1.16)的選擇有關聯性,上一個問題若是選擇n
,這個問題不會出現。
單擊回車繼續。
選擇國際化支持中的其它語言
這是一個多選題,有37個選項,使用上下鍵切換選項,使用空格鍵選中選項,使用a鍵全選,使用i鍵取消全選。
根據本身的業務規劃,選擇相應的語言,也能夠都不選擇。
單擊回車繼續。
選擇單元測試工具
這是一個多選題,有2個選項,使用上下鍵切換選項,使用空格鍵選中選項,使用a鍵全選,使用i鍵取消全選。
根據本身的技術架構規劃,選擇相應的技術組件,也能夠都不選擇。
單擊回車繼續。
是否須要從JHipster市場中安裝其它的開發工具?
默認選擇是N
,若是須要啓用,輸入y
;這裏選擇默認選項N
。
單擊回車繼續。
這個過程可能會有點長,根據電腦性能和網速的不一樣,一般須要3-5分鐘。
至此,生成工程代碼成功完成。能夠在appstack/gateway目錄下查看全部生成的文件。
接下來,是爲microservice1中的實體表role生成前端資源。
在開始以前,確保microservice1已經爲實體role生成事後端代碼。
進入appstack/gateway目錄,輸入命令後回車:
$ cd gateway/ $ jhipster entity role
是否爲一個現有的業務微服務的實體生成前端資源?
默認選擇是Y
,若是不須要添加,輸入n
;這裏選擇默認選項Y
。
單擊回車繼續。
輸入這個現有的業務微服務的路徑
這是一個相對於gateway的相對路徑,對於microservice1工程來講,這裏要輸入../microservice1
。
單擊回車繼續。
是否要更新這個實體
這是一個單選題,有4個選項,使用上下鍵切換選項。
4個選項的意思分別是是的,從新生成這個實體;是的,增長字段和關係;是的,刪除字段和關係;不,退出。這裏選擇Yes, re generate the entity
。
單擊回車繼續。
這個過程當中會提示與已有文件有衝突,須要選擇處理方式,提示的輸入選項是Ynaxdh
,說明以下:
Y: yes (Default) n: no a: yes to this question and all others (or always yes). x: abort (exit) d: show the differences between the old and the new file h: help, list all options
這裏選擇a
;
單擊回車。這裏主要是生成實體對應的前端資源,根據實體的複雜程度不一樣,耗時也不盡相同,咱們這個示例只有1個字段,生成很快,一般1-2分鐘就能完成。
至此,生成實體代碼成功完成。能夠執行maven測試命令來驗證整個工程代碼(若是生成工程代碼時選擇的構建工具是Maven)
$ mvn test
若是一切正常,命令行會輸出成功信息:
以前在生成工程代碼時選擇的前端組件是Angular,因此前端資源會按以下流程生成:
a, 生成工程代碼或者實體代碼的任務完成後,會自動觸發執行yarn install
;
b, yarn install
執行完成後,會自動觸發執行webpack:build
;
c, webpack:build
執行完成後,全部前端資源就已經生成了,默認是在gateway/target/www目錄下。
進入gateway目錄,輸入命令後回車:
$ cd gateway/ $ yarn start
若是一切正常,會啓動Webpack dev-server;
可經過瀏覽器訪問http://192.168.220.120:9000
查看前端調試頁面。此時全部前端資源的修改,都會同步更新到瀏覽器上。
在命令行,任意目錄下,啓動一個mysql容器;若是本地沒有mysql:5的鏡像,容器啓動時會自動去docker store下載鏡像。
$ docker container run --name gateway-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d -p 32800:3306 mysql:5
經過客戶端鏈接上剛啓動的數據庫容器,添加一個名爲gateway
的schema。應用啓動時會自動在這個schema裏面建立數據表。
spring.datasource.url中的端口號32800
,與步驟4.1中-p參數指定的值保持一致。
spring.datasource.url中的schema名稱gateway
,與步驟4.2中添加的schema名稱保持一致。
spring.datasource.password的值my-secret-pw
,與步驟4.1中MYSQL_ROOT_PASSWORD
參數指定的值保持一致。
$ cd gateway/ $ vi src/main/resources/config/application-dev.yml # 修改數據庫鏈接相關配置 spring: datasource: url: jdbc:mysql://localhost:32800/gateway?useUnicode=true&characterEncoding=utf8&useSSL=false username: root password: my-secret-pw
進入gateway目錄,輸入命令後回車:
$ cd gateway/ $ mvn -Pdev package
若是一切正常,命令行會輸出構建成功信息:
進入gateway目錄,輸入命令後回車:
$ nohup ./target/gateway-0.0.1-SNAPSHOT.war &
經過tail命令,查看啓動日誌:
$ tail -f nohup.out
若是一切正常,日誌會輸出啓動成功信息:
啓動完成後,能夠經過瀏覽器訪問http://192.168.220.120:8761
,登陸名和密碼默認都是admin
:
能夠看到在Instances Registered區域,gateway已經註冊。
經過瀏覽器訪問http://192.168.220.120:8080
,進入網關微服務的首頁:
點擊右上角帳號 - 登陸, 默認用戶名和密碼都是admin
。
登陸以後能夠看到頁頭上的菜單,數據菜單下就是全部實體的操做頁面,這裏能看到生成的實體role的子菜單:
點擊role子菜單,進入role實體的操做頁面,這裏已經生成了基本的增刪改查功能,若是須要更多功能,就要定製開發了:
這裏包括了以下功能頁面:
頁面功能都很直觀,點進去看一看就知道了。
這裏就是國際化支持的頁面,生成工程代碼時選擇了哪些語言,這裏就會提供哪些語言的子菜單:
JHipster生成微服務架構的應用棧(一)- 準備工做
JHipster生成微服務架構的應用棧(二)- 認證微服務示例
JHipster生成微服務架構的應用棧(三)- 業務微服務示例
JHipster生成微服務架構的應用棧(四)- 網關微服務示例
JHipster生成微服務架構的應用棧(五)- 容器編排示例