本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈。 环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里) 应用栈名称:appstack 认证微服务: uaa 业务微服务:microservice1 网关微服务:gateway 实体名:role 主机IP:192.168.220.120
进入appstack/gateway目录,输入命令后回车:
$ cd gateway/
$ jhipster
选择生成的应用类型
这是一个单选题,有4个选项,使用上下键切换选项。
这里选择Microservice gateway
,也就是网关微服务。
单击回车继续。
输入应用的名称
默认名称是当前目录名gateway
,也可以自己输入名称;这里使用默认名称。
注意:名称只能是大小写字母,数字和下划线的任意组合,不允许任何其它字符。
单击回车继续。
输入微服务的端口号
默认端口号是8080
,也可以自己输入端口号,注意不要和别的微服务和进程的端口号冲突。
单击回车继续。
输入应用的java包名
默认java包名是com.mycompany.myapp
,也可以自己输入包名;这里使用默认包名。
注意:包名要符合Java标准规范的要求。
单击回车继续。
选择一个服务发现组件
这是一个单选题,有3个选项,使用上下键切换选项。
根据微服务体系规划,这里选择JHipster Registry
。
单击回车继续。
选择使用的认证类型
这是一个单选题,有3个选项,使用上下键切换选项。
根据微服务体系规划,这里选择Authentication with JHipster UAA server (the server must be generated separately)
。
单击回车继续。
输入uaa微服务所在的目录
这是一个相对于gateway的相对路径,默认路径是../uaa
,这就是我们之前生成uaa工程的目录所在;如果之前生成的uaa目录名是myuaa,那么这里要输入../myuaa
。
注意:这个问题和上一个问题(1.6)的选择有关联性,上一个问题的不同选择,会导致后续不同问题的出现。
单击回车继续。
选择使用的数据库类型
这是一个单选题,有4个选项,使用上下键切换选项。
可以看到支持的数据库类型很多,这里选择默认选项SQL
。
单击回车继续。
选择生产环境中使用的数据库
这是一个单选题,有5个选项,使用上下键切换选项。
可以看到目前支持5种SQL数据库,这里选择默认选项MySQL
。
单击回车继续。
选择开发环境中使用的数据库
这是一个单选题,有3个选项,使用上下键切换选项。
H2调试起来简单,但为了和生产环境保持一致性,这里选择MySQL
。
单击回车继续。
是否需要使用Hibernate 2级缓存?
默认选择是Y
,如果不需要,输入n
;这里选择默认选项Y
。
单击回车继续。
选择使用Maven还是Gradle来构建微服务
这是一个单选题,有2个选项,使用上下键切换选项。
根据自己的开发环境需要,选择相应的构建工具,这里选择默认选项Maven
。
单击回车继续。
选择需要用到的技术组件
这是一个多选题,有4个选项,使用上下键切换选项,使用空格键选中选项,使用a键全选,使用i键取消全选。
根据自己的技术架构规划,选择相应的技术组件,也可以都不选择。
单击回车继续。
选择前端框架
这是一个单选题,有2个选项,使用上下键切换选项。
根据自己的技术架构规划,选择相应的前端框架,这里选择默认选项Angular 6
。
单击回车继续。
是否需要启用样式表预处理来支持SASS?
默认选择是N
,如果需要启用,输入y
;这里选择默认选项N
。
单击回车继续。
是否需要国际化支持?
默认选择是Y
,如果不需要,输入n
;这里选择默认选项Y
。
单击回车继续。
选择国际化支持中的母语
这是一个单选题,有37个选项,使用上下键切换选项。
注意:这个问题和上一个问题(1.16)的选择有关联性,上一个问题如果选择n
,这个问题不会出现。
单击回车继续。
选择国际化支持中的其它语言
这是一个多选题,有37个选项,使用上下键切换选项,使用空格键选中选项,使用a键全选,使用i键取消全选。
根据自己的业务规划,选择相应的语言,也可以都不选择。
单击回车继续。
选择单元测试工具
这是一个多选题,有2个选项,使用上下键切换选项,使用空格键选中选项,使用a键全选,使用i键取消全选。
根据自己的技术架构规划,选择相应的技术组件,也可以都不选择。
单击回车继续。
是否需要从JHipster市场中安装其它的开发工具?
默认选择是N
,如果需要启用,输入y
;这里选择默认选项N
。
单击回车继续。
这个过程可能会有点长,根据电脑性能和网速的不同,通常需要3-5分钟。
至此,生成工程代码成功完成。可以在appstack/gateway目录下查看所有生成的文件。
接下来,是为microservice1中的实体表role生成前端资源。
在开始之前,确保microservice1已经为实体role生成过后端代码。
进入appstack/gateway目录,输入命令后回车:
$ cd gateway/
$ jhipster entity role
是否为一个现有的业务微服务的实体生成前端资源?
默认选择是Y
,如果不需要添加,输入n
;这里选择默认选项Y
。
单击回车继续。
输入这个现有的业务微服务的路径
这是一个相对于gateway的相对路径,对于microservice1工程来说,这里要输入../microservice1
。
单击回车继续。
是否要更新这个实体
这是一个单选题,有4个选项,使用上下键切换选项。
4个选项的意思分别是是的,重新生成这个实体;是的,增加字段和关系;是的,删除字段和关系;不,退出。这里选择Yes, re generate the entity
。
单击回车继续。
这个过程中会提示与已有文件有冲突,需要选择处理方式,提示的输入选项是Ynaxdh
,说明如下:
Y: yes (Default)
n: no
a: yes to this question and all others (or always yes).
x: abort (exit)
d: show the differences between the old and the new file
h: help, list all options
这里选择a
;
单击回车。这里主要是生成实体对应的前端资源,根据实体的复杂程度不同,耗时也不尽相同,我们这个示例只有1个字段,生成很快,通常1-2分钟就能完成。
至此,生成实体代码成功完成。可以执行maven测试命令来验证整个工程代码(如果生成工程代码时选择的构建工具是Maven)
$ mvn test
如果一切正常,命令行会输出成功信息:
之前在生成工程代码时选择的前端组件是Angular,所以前端资源会按如下流程生成:
a, 生成工程代码或者实体代码的任务完成后,会自动触发执行yarn install
;
b, yarn install
执行完成后,会自动触发执行webpack:build
;
c, webpack:build
执行完成后,所有前端资源就已经生成了,默认是在gateway/target/www目录下。
进入gateway目录,输入命令后回车:
$ cd gateway/
$ yarn start
如果一切正常,会启动Webpack dev-server;
可通过浏览器访问http://192.168.220.120:9000
查看前端调试页面。此时所有前端资源的修改,都会同步更新到浏览器上。
在命令行,任意目录下,启动一个mysql容器;如果本地没有mysql:5的镜像,容器启动时会自动去docker store下载镜像。
$ docker container run --name gateway-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d -p 32800:3306 mysql:5
通过客户端连接上刚启动的数据库容器,添加一个名为gateway
的schema。应用启动时会自动在这个schema里面创建数据表。
spring.datasource.url中的端口号32800
,与步骤4.1中-p参数指定的值保持一致。
spring.datasource.url中的schema名称gateway
,与步骤4.2中添加的schema名称保持一致。
spring.datasource.password的值my-secret-pw
,与步骤4.1中MYSQL_ROOT_PASSWORD
参数指定的值保持一致。
$ cd gateway/
$ vi src/main/resources/config/application-dev.yml
# 修改数据库连接相关配置
spring:
datasource:
url: jdbc:mysql://localhost:32800/gateway?useUnicode=true&characterEncoding=utf8&useSSL=false
username: root
password: my-secret-pw
进入gateway目录,输入命令后回车:
$ cd gateway/
$ mvn -Pdev package
如果一切正常,命令行会输出构建成功信息:
进入gateway目录,输入命令后回车:
$ nohup ./target/gateway-0.0.1-SNAPSHOT.war &
通过tail命令,查看启动日志:
$ tail -f nohup.out
如果一切正常,日志会输出启动成功信息:
启动完成后,可以通过浏览器访问http://192.168.220.120:8761
,登录名和密码默认都是admin
:
可以看到在Instances Registered区域,gateway已经注册。
通过浏览器访问http://192.168.220.120:8080
,进入网关微服务的首页:
点击右上角账号 - 登录, 默认用户名和密码都是admin
。
登录之后可以看到页头上的菜单,数据菜单下就是所有实体的操作页面,这里能看到生成的实体role的子菜单:
点击role子菜单,进入role实体的操作页面,这里已经生成了基本的增删改查功能,如果需要更多功能,就要定制开发了:
这里包括了如下功能页面:
页面功能都很直观,点进去看一看就知道了。
这里就是国际化支持的页面,生成工程代码时选择了哪些语言,这里就会提供哪些语言的子菜单:
JHipster生成微服务架构的应用栈(二)- 认证微服务示例
JHipster生成微服务架构的应用栈(三)- 业务微服务示例
JHipster生成微服务架构的应用栈(四)- 网关微服务示例
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。