Jhipster初探

2,499 阅读5分钟

公司使用了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应用程序和微服务架构,即

  1. 高可用、健壮的 JAVA 技术栈服务端 Spring Boot 程序
  2. 一个顺滑的、现代的、移动优先的前端 Angular,React 及 Bootstrap 程序架构
  3. 一个健壮的微服务架构包括:JHipster Registry, Netflix OSS, ELK stack 以及 Docker
  4. 强大的应用构建流程,使用:Yeoman, Webpack/Gulp 以及 Maven/Gradle

介绍视频与demo

官网中有一个17min的介绍视频,我们跟着来做一个demo以及在demo中develop

  1. 环境配置简单说一下,需要node,npm,Java环境,Maven环境,Git环境这些常用开发环境,接着使用
npm install -g generator-jhipster

来安装generator-jhipster,安装后建立目录并进入

mkdir myjh
cd myjh
//运行jhipster即可
jhipster

接着就是启动成功的画面,我们选择不同的配置来创建项目

  1. 配置

首先一个私下里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 就开始了构建

  1. 构建成功后打开并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的构建,开发,部署就完成了,还是很有意思的.