初識JHipster

正如它的名字一樣,JHipster是一個Java弄潮兒,看看它所使用的技術~

客戶端:

服務端:

(截圖來自JHipster的官網:https://jhipster.github.io

從Spring Boot到NetflixOSS,從Docker到Gradle,從AngularJS到React,從Hazelcast到Cassandra ...... 是不是滿足了一個Java開發者追逐時尚的所有欲求~  o(^▽^)o

 

究其本質,JHipster只是一個Yeoman的Generator。Yeoman又是什麼鬼?

Yeoman是Google和非Google的developer們開發的一個自動生成代碼的含工作流的工具,其實就是自動生成代碼用的,生成代碼的模板就叫做Generator。

因爲Generator是用Node.js編寫的,所以JHipster是一個用Node.js編寫的、用來生成Java代碼的、一個Yeoman的Generator,有點繞吧~

來看看JHipster還有哪些Generator:

(截圖來自JHipster的官網:https://jhipster.github.io

是不是一堆一堆的時髦東東~

 

那麼怎麼用JHipster生成一個Java項目呢? 來看一個具體的例子:

一、準備環境

1、安裝NodeJS

       從官網https://nodejs.org/en/ 下載安裝文件(建議安裝LTS版本,即長期穩定版本)。該網站會根據下載者當前的操作系統類型自動切換下載文件的類型:

      Windows下載以後是一個msi格式的文件,一直點“下一步”就安裝成功了:

      

     Linux下稍微麻煩點,下載以後是一個已編譯的二進制程序包,要先把NodeJs的相關命令加入到Path中:

     

     用 vi 編輯一下/etc/profile文件:

     vim /etc/profile

     在最後一行加入:(NodeJs的bin目錄視解壓時的目錄而定)

     export PATH=/usr/local/apps/tools/node-v4.5.0-linux-x64/bin:$PATH

     source一下profile文件,然後看看生效了沒有:

     

     這樣就可以正常使用NodeJS了。

2、安裝Yeoman

     安裝NodeJS是爲了使用它的包管理工具npm(nodejs package manager),有了它後面的事情就簡單多了。

     安裝Yeoman的“腳手架” --> "yo":npm install -g yo

     安裝Yeoman的包管理器“bower”:npm install -g bower

     安裝Yeoman最新的構建工具“gulp” (原來使用grunt):npm install -g gulp

     最後,安裝JHipster的Generator:npm install -g generator-jhipster

 

二、生成一個Java工程

     通過npm安裝好generator-jhipster以後,就可以用它來生成Java工程了。

     剩下的事情很簡單~  一個命令就可以搞定一個Java項目的代碼:yo jhipster

     隨便找一個空白的目錄,運行一下這個命令看看:

     

    (此爲Linux截圖,Dos中效果一樣)

     只要根據項目的實際情況做一個簡單的“調查問卷”整個工程就生成好了,導入Eclipse看看:

     

       編寫一個基於 Spring Cloud 和 AngularJS 的Web工程就是如此簡單~ 很神奇吧~

       注意:

       Linux下運行yo jhipster會有一個錯誤:

       

      搞定辦法如下:

      # cd /root/.config/

        # cd configstore

         -bash: cd: configstore: No such file or directory

       # mkdir -p /root/.config/configstore

       # chmod g+rwx /root /root/.config /root/.config/configstore

      依次執行上述命令即可。

 

     讓我們看一下究竟發生了什麼:

      -------------------------------------------------------------------------------------------------------------------------------------------------

      我們選擇的項目類型是:microservice application,然後回答了這些問題:

     * What is the base name of your application?(testjhipster)           

      項目的基本名稱(我的理解就是項目名)。

     * What is your default Java package name?(com.mycompany.myapp)    

       項目中默認的java包的包名。

     * Which *type* of authentication would you like to use?(Use arrow keys)    

       使用哪種類型的驗證。這個暫時不明白,沒關係,通過上下箭頭選擇,選擇默認的。

     * Which *type* of database would you like to use?(Use arrow keys)    

       使用什麼類型的數據庫?有三個選項:SQL、MongoDB、Cassandra。MongoDB是分佈式文檔存儲數據庫,Cassandra是開源分佈式NoSQL數據庫類型。選擇常用的關係數據庫類型SQL。

     * Which *production* database would you like to use?(use arrow keys)    

       使用什麼具體的數據庫產品?選擇默認的MySQL。這個選擇與項目生成後的src/main/resources/config/application-prod.yml文件密切相關。

     * which *development* database would you like to use?    

       開發時使用什麼數據庫?

       這裏有三個選項:’H2 with disk-based persistence’、’H2 with in-memory persistence’和’MySQL’

       第一個是將數據保存在運行內存中,重啓服務器時,數據就會丟失。

       第二個是將數據保存在磁盤中,目前正在測試階段,而且不能在window下正常使用。

       選擇默認的MySQL。這個選擇對應項目生成後的src/main/resources/config/application-dev.yml文件。

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

       是否需要使用Hibernate二級緩存?根據自己需要,項目只是用來測試,因此選擇NO。

     * Do you want to use a search engine in your application?    

       是否需要使用一個搜索引擎。這個搜索引擎可以搜到關於jhipster的相關指南。選擇默認的No。

     * Do you want to use clustered HTTP sessions?    

       是否使用集羣HTTP會話,不懂,沒關係,選擇默認的NO。

     * Do you want to use WebSocket?    

       是否使用websocket?選擇默認的No。

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

       使用Maven或者Gradle。選擇默認的Maven。

     * Would you like to use Grunt or Gulp.js for building the frontend?    

      使用默認的Grunt。回車。

     * Would you like to use the LibSass stylesheet preprocessor for your css?    

      是否使用LibSass作爲css樣式表處理器。輸入NO。

     * Would you like to enable translation support with Angular Translate?    

      是否使用Anjular提供的翻譯支持?選擇No。

     * Which testing frameworks would you like to use?    

       測試框架的選擇。選擇默認。

    -------------------------------------------------------------------------------------------------------------------------------------------------

    簡單的問答之後代碼就生成了,很神奇吧~  答錯了也不要緊,清空目錄再答一遍就OK了。

     還可以生成實體和實體的增刪改查(帶分頁喲)~

     運行:yo jhipster:entity <entityName>  來啓動實體生成嚮導,然後跟着嚮導輸入信息就可以了。


三、部署工程

     1、運行 JHipster Registry

           JHipster Registry是一個基於Spring Cloud的配置中心,JHipster的微服務架構依賴這個程序。

           1) 從github下載源碼 https://github.com/jhipster/jhipster-registry

           2) cd到解壓目錄,然後運行: ./mvnw 或者 gradlew 就可以啓動應用了,如下圖:

          

          

       2、部署剛纔生成的Demo工程

            cd到剛纔存放microservice app的目錄下,運行./mvnw (下載相關資源並打包部署,Dos下直接敲mvnw),如下圖:

            

                         

         注意:JHipster和Yeoman的絕大多數資源都位於國外的網站中,因此想要順利構建和部署應用就要保證開發機可以順利的訪問到這些網站的資源(怎麼做你懂的~  o(^▽^)o)

 

        編後語:

        1、看似簡單的過程其實運用了大量的知識:NodeJs、Spring Cloud、Netflix OSS、Docker、Gradle... 如果對這些知識點不熟悉的話,就很難運用好JHipster

        2、JHipster的Generator是用Node.js編寫的,一旦踩到雷,去研究和調試Node.js的程序...  學習成本也是比較高的~

        3、JHipster在國外的發展速度很快,但是在國內還屬於比較新鮮的事物,直接的後果就是:資料很少~ 遇到問題只能去官網啃English(當然如果你E文好就 no problem 啦~)

        4、結論:好東西~  代表了Java開發的最新潮流,刷新了Java開發者的三觀... 。

             But...  真的決定要用它?  最好還是先好好的儲備相關知識吧(否則生成的代碼也看不懂呀~  (悲傷))。

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