正如它的名字一样,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
三、部署工程
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... 真的决定要用它? 最好还是先好好的储备相关知识吧(否则生成的代码也看不懂呀~ )。