我想把Jhipster介绍给你

前言

刚参加工作的时候,每写一行代码都感觉十分开心、充满了新鲜与激情。随着参与项目的增多,代码写的越来越多,越写越熟练。于此同时解决问题的速度也越来越快,暴露的问题也越来越少。无论什么需求,来了就干,看着看板里的任务一条条被消除,看着系统功能一个个上线,感觉自己写的代码指哪打哪。
这时候写代码感觉真爽啊!真充实啊!然而,这种感觉只持续了一两年的时间。渐渐地,和很多人一样,我也厌倦了,毕竟业务代码就那些东西,写好dao,写好service,写好controller,写好单元测试,部署,配合测试联调,上线,完事。除了设计之外,剩下的工作搞来搞去说白了就是增删改查。
如果只做设计,不写代码就好了。是的,没错,很多人都这么想,实际上后来我们的很多dao方面的内容都是自动生成的。以mybatis为例,我们会用工具去生成entity,mapper类和mapper文件。直接写service和controller即可。我以为这就很好了,然而当我发现Jhipster的时候,不禁感叹原来世界上还有这么好的东西。

先留一个问题

假设你是一个工作了3年以上的Java程序员,3年了,熟手了吧!让你从0开始编写一个单页面应用,后端使用springboot,前端使用angular或者react或者vue。使用spring security 做权限管理,使用spring data jpa做CRUD,使用JWT作为前后端交互的认证方案。
设计这个应用,你大概需要5张表,你的任务是设计并搭建好这个应用,并开发相关功能(前后端都得开发)。使得,项目启动之后,有登录界面,我可以登录不同角色的账户。登录之后我可以在前端界面中针对这几张表进行的增删改查和分页列表。还能查看swagger文档。
如果只有2个工作日,这个任务对你来说有没有难度?

Jhipster 介绍

由于前言中已经做了铺垫了,你大概能猜到Jhipster的大概是和生成代码有关。然而,Jhipster不止如此。Jhipster这个名词可以拆开成:Java + hipster ,hipster是潮人的意思,加起来就是Java潮人? 没错,她所涉及的技术栈确实是紧跟时代潮流的。那么她的具体定义是啥呢?用官网的话说:

Jhipster是一个用于快速生成、开发、部署现代web应用和微服务架构的开发平台。

看了这个定义,貌似没啥?甚至不是很明白。然而软件开发是一个实操比较强的工种,上手操作一把就知道了。还记得上面我们留的目标问题吗?实现这个问题你需要多久?我猜2天你根本不够或者是很吃力、非常吃力才能完成。然而,提前透露,使用Jhipster的话,你只需要花半天的时间把数据表设计好。剩下的10分钟就好。

安装Jhipster

安装Jhipster没啥技术含量,不细说。第一步先安装nodejs,然后执行如下命令安装jhipster:

npm install -g generator-Jhipster

生成一个前后端分离的项目

安装好之后,我们可以开始创建项目了。先创建Hige目录,例如jhipster_demo,然后在命令行中进入这个目录,输入命令jhipster回车之后回复一系列问题之后,就可生产项目了,一步步填写,过程中的问题如下:

1. What is the base name of your application? (您的应用程序的基础名是什么?)
 这是您应用程序的名称。
2. What is your default Java package name? (您的默认Java软件包名称是什么?)
 您的Java应用程序将以此为包的根名称。 
3. Do you want to use the JHipster Registry to configure, monitor and scale your application? 
JHipster Registry是一个开源工具,用于管理您在运行中的应用程序。可不选。
4.Which type of authentication would you like to use?
选择认证方式,如JWT,OAuth 2.0,HTTP会话等。
5.Which type of database would you like to use?
选择数据库类型,提供了sql的,nosql的,供你选择。
6.Which production database would you like to use?
您要使用哪个 生产 数据库
7. Which development database would you like to use? 
您要使用哪个 开发 数据库?一般选h2-disk
8.Do you want to use the Spring cache abstraction?
您是否要使用Spring抽象缓存?
9. Would you like to use Maven or Gradle?
您要使用Maven还是Gradle?
10. Which other technologies would you like to use?
您还想使用哪些其他技术?根据需要选择即可
11. Which Framework would you like to use for the client? 
您想为前端选择使用哪个框架 ?给出的选项是angular,react,vue
12.Would you like to use a Bootswatch theme? 
选择你想要使用的前端题。
13.Would you like to use the Sass stylesheet preprocessor for your CSS?
您想为CSS使用Sass样式表预处理器吗?
14.Which testing frameworks would you like to use? 
您想使用哪些测试框架?可选的是Gatling,Cucumber等。
15.Would you like to install other generators from the JHipster Marketplace?
您是否要从JHipster市场安装其他生成器? 选否就行。

完成上面的问答填写大概需要3分钟,然后就开始生成项目了。你将得到一个,使用springboot+angular/react/vue的现代web应用。下面可以设计数据模型了。

设计实体模型

很多人会使用一些工具来建模,建模好了之后,可以直接导出sql语句建表。在jhipster中也有类似工具。叫JHipster UML,我们用JHipster UML可以定义模型实体的名称,字段,字段类型,以及一对多、多对多之类的关系。以官网给出的简单的博客系统UML为例,是这样的:

entity Blog {
  name String required minlength(3),
  handle String required minlength(2)
}

entity Entry {
  title String required,
  content TextBlob required,
  date Instant required
}

entity Tag {
  name String required minlength(2)
}

relationship ManyToOne {
  Blog{user(login)} to User,
  Entry{blog(name)} to Blog
}

relationship ManyToMany {
  Entry{tag(name)} to Tag{entry}
}

paginate Entry, Tag with infinite-scroll

即使是第一次看这个,也能看出,分别有Blog,Entry,Tag三个实体,以及他们的对应关系。

生成代码

上面的建模语言中的内容,我们保存为blog.jh 文件。然后cd 到我们的项目目录cd jhipster_demo。执行jhipster import-jdl blog.jh。稍等片刻之后,你会得到一个完整的应用,dao,servie,controller,前端页面功能等,可以直接运行查看效果。这个过程只有10分钟,就实现了我们开头所举例子中的问题。

我们可以运行项目,看看效果。有两种方式,方法一:

1.执行mvn clean package -Dmaven.test.skip=true

2.cd target

3.java -jar jar名称

方法二:

  1. 用IDE打开项目,找到springboot的入口程序,在我们这里就是BlogApplication.java,运行这个类启动项目。
  2. 在项目目录运行npm install ,然后运行npm start即可。

总结

当我们写了很多代码之后,还去写很多的胶水代码其实就没多大意义了。我们完全可以借助一些工具,帮我们生产代码。解放我们的双手,释放我们的时间,或者只是单纯的投个懒,有何不可呢?当我们解放了更多的时间之后,可以将更多的时间关注在设计上关注在其他方面上。实际上,jhipster写的代码还是可以的,简单的crud应用完全没问题,他生成的和亲自去写是一样的。

jhipster组合了一套成熟的技术方案,用来搭建项目也是非常好的,在创建新项目的时候,自己东拼西凑,找这个配那个,弄了半天不见得能跑起来。jhipster直接给你生产一个能用能跑的。岂不美哉!

由于懒,我没贴图片,没贴代码,感兴趣的可以自己去操作一把看看。

Jhipster的官网:https://www.jhipster.tech/

alt 逃离沙漠公众号

posted @ 2020-10-12 21:03  逃离沙漠  阅读(5528)  评论(3编辑  收藏  举报