JHipster生成單體架構的應用示例

本文演示如何用JHipster生成一個單體架構風格的應用。
環境需求:安裝好JHipster開發環境的CentOS 7.4(參考這裏
應用名:app1
實體名:role
主機IP:192.168.220.120html

首先建立一個應用目錄

$ mkdir app1

1 生成工程代碼

進入app1目錄,輸入命令後回車:前端

$ cd app1/
$ jhipster

命令行輸出JHipster啓動信息

如今開始問答環節

1.1 Which type of application would you like to create?

選擇生成的應用類型
這是一個單選題,有4個選項,使用上下鍵切換選項。
由於這個例子是生成單體架構的應用,因此這裏選擇默認選項Monolithic application,也就是單體架構的應用。java

單擊回車繼續。node

1.2 What is the base name of your application?

輸入應用的名稱
默認名稱是當前目錄名app1,也能夠本身輸入名稱;這裏使用默認名稱。
注意:名稱只能是大小寫字母,數字和下劃線的任意組合,不容許任何其它字符。mysql

單擊回車繼續。webpack

1.3 What is your default Java package name?

輸入應用的java包名
默認java包名是com.mycompany.myapp,也能夠本身輸入包名;這裏使用默認包名。
注意:包名要符合Java標準規範的要求。git

單擊回車繼續。github

1.4 Do you want to use the JHipster Registry to configure, monitor and scale your application?

是否須要使用JHipster Registry來實現應用的配置,監控和彈性縮放?
這是一個單選題,有2個選項,使用上下鍵切換選項。
由於這個例子是生成單體架構的應用,不須要以上特性,因此這裏選擇默認選項Noweb

單擊回車繼續。spring

1.5 Which type of authentication would you like to use?

選擇應用的認證類型
這是一個單選題,有3個選項,使用上下鍵切換選項。
對於無狀態的單體應用,JWT最適合,因此這裏選擇默認選項JWT authentication

單擊回車繼續。

1.6 Which type of database would you like to use?

選擇使用的數據庫類型
這是一個單選題,有4個選項,使用上下鍵切換選項。
能夠看到支持的數據庫類型不少,這裏選擇默認選項SQL

單擊回車繼續。

1.7 Which production database would you like to use?

選擇生產環境中使用的數據庫
這是一個單選題,有5個選項,使用上下鍵切換選項。
能夠看到目前支持5種SQL數據庫,這裏選擇默認選項MySQL

單擊回車繼續。

1.8 Which development database would you like to use?

選擇開發環境中使用的數據庫
這是一個單選題,有3個選項,使用上下鍵切換選項。
H2調試起來簡單,但爲了和生產環境保持一致性,這裏選擇MySQL

單擊回車繼續。

1.9 Do you want to use the Spring cache abstraction?

是否須要使用Spring Cache?
這是一個單選題,有5個選項,使用上下鍵切換選項。
對於單體架構的應用,不考慮多個實例的場景,使用本地緩存最簡單,因此這裏選擇Yes, with the Ehcache implementation (local cache, for a single node)

單擊回車繼續。

1.10 Do you want to use Hibernate 2nd level cache?

是否須要使用Hibernate二級緩存?
默認選擇是Y,若是不須要使用,輸入n;這裏選擇默認選項Y
注意:這個問題和上一個問題(1.9)的選擇有關聯性,上一個問題的不一樣選擇,會致使後續不一樣問題的出現。

單擊回車繼續。

1.11 Would you like to use Maven or Gradle for building the backend?

選擇使用Maven仍是Gradle來構建應用
這是一個單選題,有2個選項,使用上下鍵切換選項。
根據本身的開發環境須要,選擇相應的構建工具,這裏選擇默認選項Maven

單擊回車繼續。

1.12 Which other technologies would you like to use?

選擇須要用到的技術組件
這是一個多選題,有4個選項,使用上下鍵切換選項,使用空格鍵選中選項,使用a鍵全選,使用i鍵取消全選。
根據本身的技術架構規劃,選擇相應的技術組件,也能夠都不選擇。

單擊回車繼續。

1.13 Which Framework would you like to use for the client?

選擇前端框架
這是一個單選題,有2個選項,使用上下鍵切換選項。
根據本身的技術架構規劃,選擇相應的前端框架,這裏選擇默認選項Angular 6

單擊回車繼續。

1.14 Would you like to enable SASS support using the LibSass stylesheet preprocessor?

是否須要啓用樣式表預處理來支持SASS?
默認選擇是N,若是須要啓用,輸入y;這裏選擇默認選項N

單擊回車繼續。

1.15 Would you like to enable internationalization support?

是否須要國際化支持?
默認選擇是Y,若是不須要,輸入n;這裏選擇默認選項Y

單擊回車繼續。

1.16 Please choose the native language of the application

選擇國際化支持中的母語
這是一個單選題,有37個選項,使用上下鍵切換選項。
注意:這個問題和上一個問題(1.15)的選擇有關聯性,上一個問題若是選擇n,這個問題不會出現。

單擊回車繼續。

1.17 Please choose additional languages to install

選擇國際化支持中的其它語言
這是一個多選題,有37個選項,使用上下鍵切換選項,使用空格鍵選中選項,使用a鍵全選,使用i鍵取消全選。
根據本身的業務規劃,選擇相應的語言,也能夠都不選擇。

單擊回車繼續。

1.18 Besides JUnit and Jest, which testing frameworks would you like to use?

選擇單元測試工具
這是一個多選題,有2個選項,使用上下鍵切換選項,使用空格鍵選中選項,使用a鍵全選,使用i鍵取消全選。
根據本身的技術架構規劃,選擇相應的技術組件,也能夠都不選擇。

單擊回車繼續。

1.19 Would you like to install other generators from the JHipster Marketplace?

是否須要從JHipster市場中安裝其它的開發工具?
默認選擇是N,若是須要啓用,輸入y;這裏選擇默認選項N

單擊回車繼續。

問答結束,開始生成工程代碼

這個過程可能會有點長,根據電腦性能和網速的不一樣,一般須要3-5分鐘。

至此,生成工程代碼成功完成。能夠在app1根目錄下查看全部生成的文件。

2 生成實體代碼

接下來,建立一個實體表role,並生成相關的後端代碼和前端資源。
在開始以前,一般須要先把數據庫設計完成,通常狀況下不須要手工添加id字段,JHipster默認會生成一個自增的int類型的id主鍵。
進入app1目錄,輸入命令後回車:

$ cd app1/
$ jhipster entity role

命令行輸出實體已建立

如今開始建立字段

2.1 Do you want to add a field to your entity?

是否須要添加一個字段到實體?
默認選擇是Y,若是不須要添加,輸入n;這裏選擇默認選項Y

單擊回車繼續。

2.2 What is the name of your field?

輸入字段名
這裏輸入第一個字段名roleName,字段名要符合以前所選擇的數據庫的命名規範。
注意:這個問題和上一個問題(2.1)的選擇有關聯性,上一個問題若是選擇n,這個問題不會出現。

單擊回車繼續。

2.3 What is the type of your field?

選擇字段類型
這是一個單選題,有12個選項,使用上下鍵切換選項。
根據你的數據庫設計,選擇相應類型,這裏選擇String類型。

單擊回車繼續。

2.4 Do you want to add validation rules to your field?

是否須要爲這個字段添加規則?
默認選擇是N,若是須要添加,輸入y;這裏選擇默認選項N

單擊回車繼續。

2.5 Do you want to add a field to your entity?

是否須要繼續添加字段?
成功添加完一個字段後,從新回到了第一個問題(2.1)。若是選擇Y,會重複2.1 ~ 2.4的過程;若是選擇n,則進入新的問題;這裏輸入n

單擊回車繼續。

2.6 Do you want to add a relationship to another entity?

是否須要添加一個與別的實體的關聯關係?
默認選擇是Y,若是不須要添加,輸入n;由於目前尚未生成別的實體,這裏輸入n

單擊回車繼續。

2.7 Do you want to use separate service class for your business logic?

是否須要使用獨立的service層來封裝業務邏輯?
這是一個單選題,有3個選項,使用上下鍵切換選項。
三個選項的意思分別是不用service層使用service類使用service接口和實現類;這裏選擇Yes, generate a separate service class

單擊回車繼續。

2.8 Do you want to use a Data Transfer Object (DTO)?

是否須要使用DTO?
這是一個單選題,有2個選項,使用上下鍵切換選項。
若是選擇No, use the entity directly,可能會帶來一些先後端耦合和傳輸效率的問題;因此這裏選擇[BETA] Yes, generate a DTO with MapStruct,雖然仍是BETA版本,但實際項目中使用沒出現什麼問題。

單擊回車繼續。

2.9 Do you want to add filtering?

是否須要添加篩選功能?
這是一個單選題,有2個選項,使用上下鍵切換選項。
若是選擇添加篩選功能,代碼中會添加JPA動態查詢的邏輯,但實際代碼還須要手動修改,也許未來新版本會不斷完善這個功能;這裏爲了簡單起見,選擇Not needed

單擊回車繼續。

2.10 Do you want pagination on your entity?

是否須要分頁功能?
這是一個單選題,有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

若是一切正常,命令行會輸出成功信息:

3 生成前端資源

以前在生成工程代碼時選擇的前端組件是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查看前端調試頁面。此時全部前端資源的修改,都會同步更新到瀏覽器上。

4 數據庫配置

4.1 啓動一個數據庫容器

在命令行,任意目錄下,啓動一個mysql容器;若是本地沒有mysql:5的鏡像,容器啓動時會自動去docker store下載鏡像。

$ docker container run --name app1-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d -p 32768:3306 mysql:5

4.2 在數據庫中建立schema

經過客戶端鏈接上剛啓動的數據庫容器,添加一個名爲app1的schema。應用啓動時會自動在這個schema裏面建立數據表。

4.3 修改應用的數據庫配置

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

5 構建和啓動

5.1 構建

進入app1目錄,輸入命令後回車:

$ cd app1/
$ mvn -Pdev package

若是一切正常,命令行會輸出構建成功信息:

5.2 啓動

進入app1目錄,輸入命令後回車:

nohup ./target/app-1-0.0.1-SNAPSHOT.war &

經過tail命令,查看啓動日誌:

$ tail -f nohup.out

若是一切正常,日誌會輸出啓動成功信息:

6 訪問應用UI

6.1 訪問首頁

經過瀏覽器訪問http://192.168.220.120:8080,進入應用的首頁:

點擊右上角帳號 - 登陸, 默認用戶名和密碼都是admin

6.2 實體頁面

登陸以後能夠看到頁頭上的菜單,數據菜單下就是全部實體的操做頁面,這裏能看到生成的實體role的子菜單:

點擊role子菜單,進入role實體的操做頁面,這裏已經生成了基本的增刪改查功能,若是須要更多功能,就要定製開發了:

6.3 管理頁面

這裏包括了以下功能頁面:

  • 用戶管理
  • 資源監控
  • 服務狀態
  • 配置
  • 審覈
  • 日誌
  • API

頁面功能都很直觀,點進去看一看就知道了。

6.4 語言頁面

這裏就是國際化支持的頁面,生成工程代碼時選擇了哪些語言,這裏就會提供哪些語言的子菜單:

源碼

jhi-example-app1

相關文章

JHipster生成微服務架構的應用棧

相關文章
相關標籤/搜索