Jhipster學習系列(一)

目錄:

1、jhipster簡介

2、jhispter生成單體項目

3、jhipster生成微服務項目及其配置



一、jhipster簡介

JHipster或者稱Java Hipster,是一個應用代碼產生器,能夠創建Spring Boot +
AngularJS的應用。開源項目地址:JHipster/Github。
JHipster使用Node.js和Yeoman產生Java應用代碼,使用Maven(Gradle)運行產生
的代碼,產生代碼有如下關鍵特徵:
src/main/java 目錄有Spring Boot 配置類在config包中,JHipster使用Spring的
Java 配置,沒有XML配置。
JPA實體或MongoDB文檔類是在domain包. JPA實體使用緩存和autogenerated
主鍵配置. 如果你使用JHipster產生你的JPA實體, 可以創建1:N和
N:N關係。
在repostiory包中是Spring Data 倉儲.
可選,你有通常@Service-beans 在服務層. 這些服務通常是配置爲事務的 安
全的業務對象。
REST 端點存在web.rest 包中, 支持Spring MVC的REST
JHipster也產生 Liquibase 改變日誌文件,用來處理數據庫更新,增加一個實
體將創建特定的schema更新,這將會版本化,當應用重啓時可被執行。
集成Spring的 Test 上下文測試支持.
JHipster 創建完整可用的AngularJS 前端,使用CRUD來管理你產生的實體。


JHipster使用手冊

JHipster 是一個 Yeoman generator, 用於創建基於 Spring Boot + AngularJS/React 的
項目。
簡易直說它是工具集堆綜合技術,意思是由多種技術工具配置而成的Java Web
開發程式產生器。好處是由Java專家累積的開發經驗,配上各類實用的框架技
術,去繁取精的運用,全方位的配置,製成出完備的開發應用程式,絕對適用
於面向服務的體系結構 (SOA)。
JHipster包括最先進的Java 8,特色是多用註解和JavaConfig, 不用XML 配置的
組態,配備了全方位的工作環境,從開發,測試,監控到製成,以及雲部署。
能提供最先進的Java 技術如微服務綜合技術 (Microservices)。

客戶端技術棧

單頁面Web應用:

  • 響應式頁面設計
  • HTML5 Boilerplate
  • Twitter Bootstrap
  • AngularJS/React
  • 兼容 IE9+ 和其他現代瀏覽器
  • 完整的國際化支持,基於 Angular Translate
  • 可選 Sass 用於 CSS 設計
  • 可選 Spring Websocket 來實現 WebSocket

強大的 Yeoman 開發工作流:

  • 使用 Bower 可以輕鬆的安裝 JavaScript 類庫
  • 使用 Gulp.js 構建, 優化項目, 支持 live reload
  • 使用 Karma and PhantomJS 進行測試

那麼,如果單頁面應用不能滿足你的需求呢?

  • 支持 Thymeleaf 模板引擎, 用於在服務端渲染頁面

服務端技術棧:

一個完整的 Spring 應用:

  • Spring Boot 用於簡化應用配置
  • Maven 或者 Gradle 用於構建,測試和運行應用
  • "development" 和 "production" 配置文件 (支持 Maven 和 Gradle)
  • Spring Security
  • Spring MVC REST + Jackson
  • 可選的 WebSocket 支持 -- 基於 Spring Websocket
  • Spring Data JPA + Bean 驗證
  • 使用 Liquibase 實現數據庫自動更新
  • Elasticsearch 支持對數據庫的搜索功能
  • 支持像MongoDB 這樣的 document-oriented NoSQL 數據庫
  • 支持像Cassandra 這樣的 column-oriented NoSQL 數據庫

支持生產環境:

  • Monitoring with Metrics 監控運行狀態
  • 支持 ehcache (本地緩存) 或者 hazelcast (分佈式緩存)
  • 可選的 HTTP session 集羣 -- 基於 hazelcast
  • 優化的靜態資源(gzip filter, HTTP cache headers)
  • 日誌管理 Logback, 可在運行時配置
  • HikariCP 連接池,用於性能優化
  • 可以將應用構建成一個標準的 WAR 文件或者一個可執行的 JAR 文件

假設你已具備下列環境:

  • JDK 8+
  • Maven或者Gradle
  • NodeJs
  • MySql(可選)
  • Git
  • Eclipse或Intellij IDEA
  • window 管理員權限的 cmd、PowerShell或者cmder
  • 阿里maven鏡像

JHipster 4.0+ 推薦使用yarn替代npm進行包管理


安裝 yarn

1. 下載最新版yarn壓縮包 latest.tar.gz
2. 解壓其中的 dist 裏面的內容到本地文件夾,例如 d:\yarn
3. 將 d:\yarn\bin 添加到 PATH 中,如果是講解壓的內容全部放
在 d:\yarn 中,則 d:\yarn\dist\bin 添加到 PATH
4. 修改yarn庫路徑 yarn config set cache-folder "你自己的緩存文件夾" 例
如 d:\yarn\cache-folder
5. 修改爲阿里鏡像 yarn config set registry
"https://registry.npm.taobao.org" ,設置完後可以使用 yarn config
list 查看是否生效,如果要移除淘寶庫,使用 yarn config delete
registry 則 registry 重置成默認庫 https://registry.yarnpkg.com
6. 注意,最新版本(gateway ng2)使用淘寶鏡像會報錯,如果持續報錯無效,刪除
淘寶鏡像,用自帶的即可。
7. 如果還異常,可以 設置npm 的registry npm config set registry

"https://registry.npmjs.org"

安裝jhipster

安裝步驟
1. 修改npm全局路徑
npm config set cache "nodejs安裝目錄\node_cache"
npm config set prefix "nodejs安裝目錄\node_npm"
2. 刪除 用戶變量 PATH 中的npm的環境變量 C:\Users\用戶名
\AppData\Roaming\npm 刪除
3. 安裝 Yeoman: yarn global add [email protected]
4. 安裝 JHipster: yarn global add generator-jhipster
xx@version 是安裝指定版本,若未指定,則是最新的
至此,JHipster已經安裝完畢



二、jhispter生成單體項目

這一部分很簡單,官方文檔寫得很清楚 : jhipster創建應用

創建綜合應用:

mkdir jhipster\app
cd jhipster\app
yo jhipster

? (1/15) Which *type* of application would you like to create? (
Use arrow keys) //選擇創建的應用類型
> Monolithic application (recommended for simple projects) //綜合
應用
Microservice application //微服務應用
Microservice gateway //微服務網關
[BETA] JHipster UAA server (for microservice OAuth2 authenticat
ion) //微服務OAuth2的身份認證服務
? (2/15) Which *Framework* would you like to use for the client?
//選擇AngularJS 版本
AngularJS 1.x
> [BETA] Angular 2.x
? (3/15) What is the base name of your application? (app) //服務

? (4/15) Would you like to install other generators from the JHi
pster Marketplace? No //從JHipster Marketplace 安裝其他生成器
? (5/15) What is your default Java package name? (com.shunneng.a
pp) //默認包名
? (6/15) Which *type* of authentication would you like to use? (
Use arrow keys) //選擇認證方式
> HTTP Session Authentication (stateful, default Spring Security
mechanism) //Spring Security默認機制 基於HTTP會話的認證方式(帶狀態)
OAuth2 Authentication (stateless, with an OAuth2 server impleme
ntation) //OAuth2的認證實現(無狀態)
JWT authentication (stateless, with a token) //J(son)W(eb)T(oke
n)(無狀態)
? (7/15) Which *type* of database would you like to use? (Use ar
row keys) //選擇數據庫類型
> SQL (H2, MySQL, MariaDB, PostgreSQL, Oracle) //關係型數據庫
MongoDB //NoSQL
Cassandra //NoSQL
? (8/15) Which *production* database would you like to use? (Use
arrow keys) //生產數據庫
> MySQL
MariaDB
PostgreSQL
Oracle - Warning! The Oracle JDBC driver (ojdbc) is not bundle
d because it is not Open Source. Please follow our documentation
to instal l it manually.
Microsoft SQL Server
? (9/15) Which *development* database would you like to use? (Us
e arrow keys) //開發數據庫
> H2 with disk-based persistence //數據存儲在磁盤的H2
H2 with in-memory persistence //內存H2(服務關閉數據丟失)
MySQL
? (10/15) Do you want to use Hibernate 2nd level cache? (Use arr
ow keys) //Hibernate 二級緩存
No
> Yes, with ehcache (local cache, for a single node) //本地緩存方
案 ehcache
Yes, with HazelCast (distributed cache, for multiple nodes) //
集羣緩存方案,多節點緩存,適合多微服務的分佈式環境
? (11/15) Would you like to use Maven or Gradle for building the
backend? (Use arrow keys) //選擇後臺構建系統
> Maven //更成熟,穩定,用戶羣體更大
Gradle //更靈活,易於擴展,支持maven一鍵轉Gradle
? (12/15) Which other technologies would you like to use? (Press
<space> to select) //可選技術
>( ) Social login (Google, Facebook, Twitter) //第三方社交登錄,基
於OAuth2.0
( ) Search engine using ElasticSearch //集成搜索開源搜索引擎 Elast
icSearch
( ) Clustered HTTP sessions using Hazelcast //使用Hazelcast管理h
ttp session集羣
( ) WebSockets using Spring Websocket //使用Spring Websocket
( ) [BETA] Asynchronous messages using Apache Kafka //Apache Ka
fka 是一種高吞吐量的分佈式發佈訂閱消息系統
? (13/15) Would you like to use the LibSass stylesheet preproces
sor for your CSS? (y/N) //建議使用gulp定時構建,將sass轉換成css而不是
運行時處理
? (14/15) Would you like to enable internationalization support?
(Y/n) //是否使用國際化
? Please choose the native language of the application? (Use arr
ow keys) //選擇本地化語言
Catalan
> Chinese (Simplified) //中文簡體
Chinese (Traditional)
Czech
Danish
Dutch
English
(Move up and down to reveal more choices)
? Please choose additional languages to install (Press <space> t
o select)//選擇其餘支持語言
>( ) Catalan
( ) Chinese (Traditional)
( ) Czech
( ) Danish
( ) Dutch
( ) English
( ) French
(Move up and down to reveal more choices)
? (15/15) Which testing frameworks would you like to use? (Press
<space> to select) //默認情況下 JHipster 提供 java 單元/集成測試(使
用Spring JUnit支持)和 JavaScript 單元測試(使用Karma.js)。這也是一個
可選項。
>( ) Gatling //使用 Gatling 進行性能測試。
( ) Cucumber //使用 Cucumber 模擬用戶行爲
( ) Protractor //使用 Protractor 對 AngularJS 進行集成測試
第一次創建比較慢,後邊如果要創建綜合應用或者微服務網關應用,可以將

node_modules 複製到其目錄下面。

項目生成後,windows/系統在項目根目錄運行mvnw,瀏覽器打開localhost:8080就會進入jhipster的界面,登陸後就可以看到:



避免文章過長,後續內容參見下一篇博客:jhipster學習系列(二)



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章