公司使用了Jhipster构建微服务,今天学习了一下,觉得思路非常不错,所以来记录下第一个Jhipster_demo
What Is JHipster(官网介绍)
JHipster is a development platform to generate, develop and deploy Spring Boot + Angular / React / Vue Web applications and Spring microservices.
我们看到Jhipster(Java Hipster,Java潮人,这名字..)旨在生成,开发,部署基于SpringBoot+Angular/React/Vue的Web应用程序或者Spring微服务
- 目标
Our goal is to generate for you a complete and modern Web app or microservice architecture, unifying:
目标是为您生成完整的,现代化的Web应用程序和微服务架构,即
- 高可用、健壮的 JAVA 技术栈服务端 Spring Boot 程序
- 一个顺滑的、现代的、移动优先的前端 Angular,React 及 Bootstrap 程序架构
- 一个健壮的微服务架构包括:JHipster Registry, Netflix OSS, ELK stack 以及 Docker
- 强大的应用构建流程,使用:Yeoman, Webpack/Gulp 以及 Maven/Gradle
介绍视频与demo
官网中有一个17min的介绍视频,我们跟着来做一个demo以及在demo中develop
- 环境配置简单说一下,需要node,npm,Java环境,Maven环境,Git环境这些常用开发环境,接着使用
npm install -g generator-jhipster
来安装generator-jhipster,安装后建立目录并进入
mkdir myjh
cd myjh
//运行jhipster即可
jhipster
接着就是启动成功的画面,我们选择不同的配置来创建项目
- 配置
首先一个私下里report usage 数据我就拒绝掉了,而后才是创建的开始
选择项目类型,我们看到它可以创建microservice,如gateway,在gateway之后创建几个microservice application,和UAA认证中心,今天我们先做一个simple project作为demo
是否响应式编程? no Spring WebFlux新特性回头研究下
接着是applicationName,packageName和是否使用注册中心,单体应用这里选no,如果是单体应用,大部分选择都是default选项
接着是安全策略,有三种,第一种是JWT认证,无状态的使用token认证方式 第二种是HTTP Session,有状态的,默认使用SpringSecurity 第三种是Oauth2.0认证 我们还是选默认,JWT方式
接着选择生产环境和开发环境的db,我这里用的都是mysql
接着缓存选默认的spring ehcache
构建使用Maven
关闭hibernate二级缓存
接着是与ES,kafka,websocket等集成,这里也先不选
接着是选择国际化,语言,默认主题等,默认即可
最后让选除了Junit4之外,别的测试框架,视频里选了Protractor,我这里没用过,先不选了,最后一个选项是是否从市场里下载其他的generators,no
就开始了构建
- 构建成功后打开并develop
经过5分钟左右项目构建完毕,idea64直接打开idea并以maven方式,pom.xml文件导入项目构建.太酷了,这里注意视频里用的是idea命令,在window中idea打开的是32位的idea,我们用的都是64位JDK,所以会报错
//在项目文件夹下
idea64 pom.xml
//构建
mvnw
mvnw全名是Maven Wrapper,它的原理是在maven-wrapper.properties文件中记录你要使用的Maven版本,当用户执行mvnw clean 命令时,发现当前用户的Maven版本和期望的版本不一致,那么就下载期望的版本,然后用期望的版本来执行mvn命令,比如刚才的mvn clean。
等待构建时想起Struts时代,公司未用构建工具,自己当时也不懂这些,每次新配一套环境如搬一座大山,环境配置,导入Jar等等,那么现在的封装程度越来越高,自动化程度越来越高,如同今天的Jhipster对SpringBoot的封装,mavne基于Pom.xml对插件和依赖自动的引用.封装带来的优点显而易见,对外暴露的端点很少,缺点就是不懂原理内部就成了黑盒,出了问题无从下手,所以既要学习新知,也要深挖原理,做到会用,会修,会优化.
maven终于构建完成了,我们继续
终端中运行mvnw
即可运行npm install
等一系列命令
之后控制台会显示运行成功,JPA会自动在我们的db中创建表支撑项目运行
我们看到功能还是挺多的,集成了swagger-ui显示Api,健康状态等,比较喜欢这个资源监控,可以看到JVM的GC情况
接着我们来创建实体,也就是实际业务的开发
访问JDL-Studio去创建实体与实体间的关系,这里我们用示例的员工实体来生成一套实体 在JDL-Studio中我们可以方便的创建实体间的关系,并以关系图显示
接着下载创建好的
jhipster-jdi.jh
,执行
jhipster import-jdl jhipster-jdl.jh
或者按视频中创建firewall.jdl
执行
jhipster import-jdl firewall.jdl
都是可以的
接着输入a选择overwrite all,接着run application again
可以看到代码中创建了我们刚才声明的实体和处理类,使用mvnw重启后再次访问.
我们看到数据中已经有刚才生成的实体,并支持增删改查,并且在swagger-API中生成了Restful接口,供我们调用
部署
经过了构建,配置,实体生成.我们使用Jhipster快速构建了一个SpringBoot+Angular的应用,接着我们把它部署到heroku上,一个云平台
//登录 heroku
heroku login
//进入项目目录
jhipster heroku
随便起个名字,等待几秒钟
heroku open
打开我们部署的应用.至此基于Jhipster的构建,开发,部署就完成了,还是很有意思的.