本文演示如何用JHipster生成一個單體架構風格的應用。
環境需求:安裝好JHipster開發環境的CentOS 7.4(參考這裏)
應用名:app1
實體名:role
主機IP:192.168.220.120html
$ mkdir app1
進入app1目錄,輸入命令後回車:前端
$ cd app1/ $ jhipster
選擇生成的應用類型
這是一個單選題,有4個選項,使用上下鍵切換選項。
由於這個例子是生成單體架構的應用,因此這裏選擇默認選項Monolithic application
,也就是單體架構的應用。java
單擊回車繼續。node
輸入應用的名稱
默認名稱是當前目錄名app1
,也能夠本身輸入名稱;這裏使用默認名稱。
注意:名稱只能是大小寫字母,數字和下劃線的任意組合,不容許任何其它字符。mysql
單擊回車繼續。webpack
輸入應用的java包名
默認java包名是com.mycompany.myapp
,也能夠本身輸入包名;這裏使用默認包名。
注意:包名要符合Java標準規範的要求。git
單擊回車繼續。github
是否須要使用JHipster Registry來實現應用的配置,監控和彈性縮放?
這是一個單選題,有2個選項,使用上下鍵切換選項。
由於這個例子是生成單體架構的應用,不須要以上特性,因此這裏選擇默認選項No
。web
單擊回車繼續。spring
選擇應用的認證類型
這是一個單選題,有3個選項,使用上下鍵切換選項。
對於無狀態的單體應用,JWT最適合,因此這裏選擇默認選項JWT authentication
。
單擊回車繼續。
選擇使用的數據庫類型
這是一個單選題,有4個選項,使用上下鍵切換選項。
能夠看到支持的數據庫類型不少,這裏選擇默認選項SQL
。
單擊回車繼續。
選擇生產環境中使用的數據庫
這是一個單選題,有5個選項,使用上下鍵切換選項。
能夠看到目前支持5種SQL數據庫,這裏選擇默認選項MySQL
。
單擊回車繼續。
選擇開發環境中使用的數據庫
這是一個單選題,有3個選項,使用上下鍵切換選項。
H2調試起來簡單,但爲了和生產環境保持一致性,這裏選擇MySQL
。
單擊回車繼續。
是否須要使用Spring Cache?
這是一個單選題,有5個選項,使用上下鍵切換選項。
對於單體架構的應用,不考慮多個實例的場景,使用本地緩存最簡單,因此這裏選擇Yes, with the Ehcache implementation (local cache, for a single node)
。
單擊回車繼續。
是否須要使用Hibernate二級緩存?
默認選擇是Y
,若是不須要使用,輸入n
;這裏選擇默認選項Y
。
注意:這個問題和上一個問題(1.9)的選擇有關聯性,上一個問題的不一樣選擇,會致使後續不一樣問題的出現。
單擊回車繼續。
選擇使用Maven仍是Gradle來構建應用
這是一個單選題,有2個選項,使用上下鍵切換選項。
根據本身的開發環境須要,選擇相應的構建工具,這裏選擇默認選項Maven
。
單擊回車繼續。
選擇須要用到的技術組件
這是一個多選題,有4個選項,使用上下鍵切換選項,使用空格鍵選中選項,使用a鍵全選,使用i鍵取消全選。
根據本身的技術架構規劃,選擇相應的技術組件,也能夠都不選擇。
單擊回車繼續。
選擇前端框架
這是一個單選題,有2個選項,使用上下鍵切換選項。
根據本身的技術架構規劃,選擇相應的前端框架,這裏選擇默認選項Angular 6
。
單擊回車繼續。
是否須要啓用樣式表預處理來支持SASS?
默認選擇是N
,若是須要啓用,輸入y
;這裏選擇默認選項N
。
單擊回車繼續。
是否須要國際化支持?
默認選擇是Y
,若是不須要,輸入n
;這裏選擇默認選項Y
。
單擊回車繼續。
選擇國際化支持中的母語
這是一個單選題,有37個選項,使用上下鍵切換選項。
注意:這個問題和上一個問題(1.15)的選擇有關聯性,上一個問題若是選擇n
,這個問題不會出現。
單擊回車繼續。
選擇國際化支持中的其它語言
這是一個多選題,有37個選項,使用上下鍵切換選項,使用空格鍵選中選項,使用a鍵全選,使用i鍵取消全選。
根據本身的業務規劃,選擇相應的語言,也能夠都不選擇。
單擊回車繼續。
選擇單元測試工具
這是一個多選題,有2個選項,使用上下鍵切換選項,使用空格鍵選中選項,使用a鍵全選,使用i鍵取消全選。
根據本身的技術架構規劃,選擇相應的技術組件,也能夠都不選擇。
單擊回車繼續。
是否須要從JHipster市場中安裝其它的開發工具?
默認選擇是N
,若是須要啓用,輸入y
;這裏選擇默認選項N
。
單擊回車繼續。
這個過程可能會有點長,根據電腦性能和網速的不一樣,一般須要3-5分鐘。
至此,生成工程代碼成功完成。能夠在app1根目錄下查看全部生成的文件。
接下來,建立一個實體表role,並生成相關的後端代碼和前端資源。
在開始以前,一般須要先把數據庫設計完成,通常狀況下不須要手工添加id字段,JHipster默認會生成一個自增的int類型的id主鍵。
進入app1目錄,輸入命令後回車:
$ cd app1/ $ jhipster entity role
是否須要添加一個字段到實體?
默認選擇是Y
,若是不須要添加,輸入n
;這裏選擇默認選項Y
。
單擊回車繼續。
輸入字段名
這裏輸入第一個字段名roleName
,字段名要符合以前所選擇的數據庫的命名規範。
注意:這個問題和上一個問題(2.1)的選擇有關聯性,上一個問題若是選擇n,這個問題不會出現。
單擊回車繼續。
選擇字段類型
這是一個單選題,有12個選項,使用上下鍵切換選項。
根據你的數據庫設計,選擇相應類型,這裏選擇String
類型。
單擊回車繼續。
是否須要爲這個字段添加規則?
默認選擇是N
,若是須要添加,輸入y
;這裏選擇默認選項N
。
單擊回車繼續。
是否須要繼續添加字段?
成功添加完一個字段後,從新回到了第一個問題(2.1)。若是選擇Y
,會重複2.1 ~ 2.4的過程;若是選擇n
,則進入新的問題;這裏輸入n
。
單擊回車繼續。
是否須要添加一個與別的實體的關聯關係?
默認選擇是Y
,若是不須要添加,輸入n
;由於目前尚未生成別的實體,這裏輸入n
。
單擊回車繼續。
是否須要使用獨立的service層來封裝業務邏輯?
這是一個單選題,有3個選項,使用上下鍵切換選項。
三個選項的意思分別是不用service層,使用service類,使用service接口和實現類;這裏選擇Yes, generate a separate service class
。
單擊回車繼續。
是否須要使用DTO?
這是一個單選題,有2個選項,使用上下鍵切換選項。
若是選擇No, use the entity directly
,可能會帶來一些先後端耦合和傳輸效率的問題;因此這裏選擇[BETA] Yes, generate a DTO with MapStruct
,雖然仍是BETA版本,但實際項目中使用沒出現什麼問題。
單擊回車繼續。
是否須要添加篩選功能?
這是一個單選題,有2個選項,使用上下鍵切換選項。
若是選擇添加篩選功能,代碼中會添加JPA動態查詢的邏輯,但實際代碼還須要手動修改,也許未來新版本會不斷完善這個功能;這裏爲了簡單起見,選擇Not needed
。
單擊回車繼續。
是否須要分頁功能?
這是一個單選題,有3個選項,使用上下鍵切換選項。
第2個選項適合Web UI,第3個選項適合Mobile UI;這裏選擇Yes, with pagination links
。
單擊回車繼續。
這個過程當中會提示與已有文件有衝突,須要選擇處理方式,提示的輸入選項是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-2分鐘就能完成。
至此,生成實體代碼成功完成。能夠執行maven測試命令來驗證整個工程代碼(若是生成工程代碼時選擇的構建工具是Maven)
$ mvn test
若是一切正常,命令行會輸出成功信息:
以前在生成工程代碼時選擇的前端組件是Angular,因此前端資源會按以下流程生成:
a, 生成工程代碼或者實體代碼的任務完成後,會自動觸發執行yarn install
;
b, yarn install
執行完成後,會自動觸發執行webpack:build
;
c, webpack:build
執行完成後,全部前端資源就已經生成了,默認是在app1/target/www目錄下。
進入app1目錄,輸入命令後回車:
$ cd app1/ $ yarn start
若是一切正常,會啓動Webpack dev-server;
可經過瀏覽器訪問http://192.168.220.120:9000
查看前端調試頁面。此時全部前端資源的修改,都會同步更新到瀏覽器上。
在命令行,任意目錄下,啓動一個mysql容器;若是本地沒有mysql:5的鏡像,容器啓動時會自動去docker store下載鏡像。
$ docker container run --name app1-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d -p 32768:3306 mysql:5
經過客戶端鏈接上剛啓動的數據庫容器,添加一個名爲app1
的schema。應用啓動時會自動在這個schema裏面建立數據表。
spring.datasource.url中的端口號32768
,與步驟4.1中-p參數指定的值保持一致。
spring.datasource.url中的schema名稱app1
,與步驟4.2中添加的schema名稱保持一致。
spring.datasource.password的值my-secret-pw
,與步驟4.1中MYSQL_ROOT_PASSWORD
參數指定的值保持一致。
$ cd app1/ $ vi src/main/resources/config/application-dev.yml # 修改數據庫鏈接相關配置 spring: datasource: url: jdbc:mysql://localhost:32768/app1?useUnicode=true&characterEncoding=utf8&useSSL=false username: root password: my-secret-pw
進入app1目錄,輸入命令後回車:
$ cd app1/ $ mvn -Pdev package
若是一切正常,命令行會輸出構建成功信息:
進入app1目錄,輸入命令後回車:
nohup ./target/app-1-0.0.1-SNAPSHOT.war &
經過tail命令,查看啓動日誌:
$ tail -f nohup.out
若是一切正常,日誌會輸出啓動成功信息:
經過瀏覽器訪問http://192.168.220.120:8080
,進入應用的首頁:
點擊右上角帳號 - 登陸, 默認用戶名和密碼都是admin
。
登陸以後能夠看到頁頭上的菜單,數據菜單下就是全部實體的操做頁面,這裏能看到生成的實體role的子菜單:
點擊role子菜單,進入role實體的操做頁面,這裏已經生成了基本的增刪改查功能,若是須要更多功能,就要定製開發了:
這裏包括了以下功能頁面:
頁面功能都很直觀,點進去看一看就知道了。
這裏就是國際化支持的頁面,生成工程代碼時選擇了哪些語言,這裏就會提供哪些語言的子菜單: