博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JHipster生成微服务架构的应用栈(三)- 业务微服务示例
阅读量:6516 次
发布时间:2019-06-24

本文共 6614 字,大约阅读时间需要 22 分钟。

本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈。

环境需求:安装好JHipster开发环境的CentOS 7.4(
应用栈名称:appstack
认证微服务: uaa
业务微服务:microservice1
网关微服务:gateway
实体名:role
主机IP:192.168.220.120

1 生成业务微服务的工程代码

进入appstack/microservice1目录,输入命令后回车:

$ cd appstack/microservice1/$ jhipster

命令行输出JHipster启动信息

1428428-20180719165549236-381693653.png

现在开始问答环节

1.1 Which type of application would you like to create?

选择生成的微服务类型

这是一个单选题,有4个选项,使用上下键切换选项。
这里选择Microservice application,所有自定义业务逻辑的微服务都可以选择这个类型。

1428428-20180719165840072-1924303194.png

单击回车继续。

1.2 What is the base name of your application?

输入微服务的名称

默认名称是当前目录名microservice1,也可以自己输入名称。
注意:名称只能是大小写字母,数字和下划线的任意组合,不允许任何其它字符。

1428428-20180719170057395-464469991.png

单击回车继续。

1.3 As you are running in a microservice architecture, on which port would like your server to run? It should be unique to avoid port conflicts.

输入微服务的端口号

默认端口号是8081,也可以自己输入端口号,注意不要和别的微服务和进程的端口号冲突。

1428428-20180719170208043-880843099.png

单击回车继续。

1.4 What is your default Java package name?

输入微服务的java包名

根据整个应用栈的目录层级,这里输入包名com.mycompany.appstack
注意:包名要符合Java标准规范的要求。

1428428-20180719170359832-1170966453.png

单击回车继续。

1.5 Which service discovery server do you want to use?

选择一个服务发现组件

这是一个单选题,有3个选项,使用上下键切换选项。
根据微服务体系规划,这里选择JHipster Registry

1428428-20180719170458831-115853458.png

单击回车继续。

1.6 Which type of authentication would you like to use?

选择使用的认证类型

这是一个单选题,有3个选项,使用上下键切换选项。
根据微服务体系规划,这里选择Authentication with JHipster UAA server (the server must be generated separately)

1428428-20180719170843253-636203196.png

单击回车继续。

1.7 What is the folder path of your UAA application?

输入uaa微服务所在的路径

这是一个相对于microservice1的相对路径,默认路径是../uaa,这就是我们之前生成uaa工程的目录所在;如果之前生成的uaa目录名是myuaa,那么这里要输入../myuaa
注意:这个问题和上一个问题(1.6)的选择有关联性,上一个问题的不同选择,会导致后续不同问题的出现。

1428428-20180719171306133-889236772.png

单击回车继续。

1.8 Which type of database would you like to use?

选择使用的数据库类型

这是一个单选题,有4个选项,使用上下键切换选项。
可以看到支持的数据库类型很多,这里选择默认选项SQL

1428428-20180719171550441-1830932669.png

单击回车继续。

1.9 Which production database would you like to use?

选择生产环境中使用的数据库

这是一个单选题,有5个选项,使用上下键切换选项。
可以看到目前支持5种SQL数据库,这里选择默认选项MySQL

1428428-20180719171625668-1404592415.png

单击回车继续。

1.10 Which development database would you like to use?

选择开发环境中使用的数据库

这是一个单选题,有3个选项,使用上下键切换选项。
H2调试起来简单,但为了和生产环境保持一致性,这里选择MySQL

1428428-20180719171806077-154786253.png

单击回车继续。

1.11 Do you want to use the Spring cache abstraction?

是否需要使用Spring Cache?

这是一个单选题,有5个选项,使用上下键切换选项。
根据实际场景需要,可以选择不同缓存组件;这里简单起见,选择No - Warning, when using an SQL database, this will disable the Hibernate 2nd level cache!

1428428-20180719171900471-107818363.png

单击回车继续。

1.12 Would you like to use Maven or Gradle for building the backend?

选择使用Maven还是Gradle来构建微服务

这是一个单选题,有2个选项,使用上下键切换选项。
根据自己的开发环境需要,选择相应的构建工具,这里选择默认选项Maven

1428428-20180719171949250-563595872.png

单击回车继续。

1.13 Which other technologies would you like to use?

选择需要用到的技术组件

这是一个多选题,有4个选项,使用上下键切换选项,使用空格键选中选项,使用a键全选,使用i键取消全选。
根据自己的技术架构规划,选择相应的技术组件,也可以都不选择。

1428428-20180719172034863-875291134.png

单击回车继续。

1.14 Would you like to enable internationalization support?

是否需要国际化支持?

默认选择是Y,如果不需要,输入n;这里选择默认选项Y

1428428-20180719172118382-1697473823.png

单击回车继续。

1.15 Please choose the native language of the application

选择国际化支持中的母语

这是一个单选题,有37个选项,使用上下键切换选项。
注意:这个问题和上一个问题(1.14)的选择有关联性,上一个问题如果选择n,这个问题不会出现。

1428428-20180719172203041-1349821286.png

单击回车继续。

1.16 Please choose additional languages to install

选择国际化支持中的其它语言

这是一个多选题,有37个选项,使用上下键切换选项,使用空格键选中选项,使用a键全选,使用i键取消全选。
根据自己的业务规划,选择相应的语言,也可以都不选择。

1428428-20180719172239836-1312525969.png

单击回车继续。

1.17 Besides JUnit and Jest, which testing frameworks would you like to use?

选择单元测试工具

这是一个多选题,有2个选项,使用上下键切换选项,使用空格键选中选项,使用a键全选,使用i键取消全选。
根据自己的技术架构规划,选择相应的技术组件,也可以都不选择。

1428428-20180719172327075-719063270.png

单击回车继续。

1.18 Would you like to install other generators from the JHipster Marketplace?

是否需要从JHipster市场中安装其它的开发工具?

默认选择是N,如果需要启用,输入y;这里选择默认选项N

1428428-20180719172539128-1385625951.png

单击回车继续。

问答结束,开始生成工程代码

这个过程,根据电脑性能和网速的不同,通常需要1-3分钟。

1428428-20180719173144520-1399678172.png

至此,生成业务微服务工程代码成功完成。可以在appstack/microservice1目录下查看所有生成的文件。

2 生成业务微服务的实体代码

接下来,创建一个实体表role,并生成相关的后端代码。

在开始之前,通常需要先把数据库设计完成,一般情况下不需要手工添加id字段,JHipster默认会生成一个自增的int类型的id主键。
进入microservice1目录,输入命令后回车:

$ cd microservice1/$ jhipster entity role

命令行输出实体已创建

1428428-20180718134510921-884545866.png

现在开始创建字段

2.1 Do you want to add a field to your entity?

是否需要添加一个字段到实体?

默认选择是Y,如果不需要添加,输入n;这里选择默认选项Y

1428428-20180718134556500-1279410748.png

单击回车继续。

2.2 What is the name of your field?

输入字段名

这里输入第一个字段名roleName,字段名要符合之前所选择的数据库的命名规范。
注意:这个问题和上一个问题(2.1)的选择有关联性,上一个问题如果选择n,这个问题不会出现。

1428428-20180718135903462-744567468.png

单击回车继续。

2.3 What is the type of your field?

选择字段类型

这是一个单选题,有12个选项,使用上下键切换选项。
根据你的数据库设计,选择相应类型,这里选择String类型。

1428428-20180718140526620-1421528037.png

单击回车继续。

2.4 Do you want to add validation rules to your field?

是否需要为这个字段添加规则?

默认选择是N,如果需要添加,输入y;这里选择默认选项N

1428428-20180718140843054-1136352203.png

单击回车继续。

2.5 Do you want to add a field to your entity?

是否需要继续添加字段?

成功添加完一个字段后,重新回到了第一个问题(2.1)。如果选择Y,会重复2.1 ~ 2.4的过程;如果选择n,则进入新的问题;这里输入n

1428428-20180718141410172-728525928.png

单击回车继续。

2.6 Do you want to add a relationship to another entity?

是否需要添加一个与别的实体的关联关系?

默认选择是Y,如果不需要添加,输入n;因为目前还没有生成别的实体,这里输入n

1428428-20180718141820349-816149579.png

单击回车继续。

2.7 Do you want to use separate service class for your business logic?

是否需要使用独立的service层来封装业务逻辑?

这是一个单选题,有3个选项,使用上下键切换选项。
三个选项的意思分别是不用service层使用service类使用service接口和实现类;这里选择Yes, generate a separate service class

1428428-20180718142721571-966311876.png

单击回车继续。

2.8 Do you want to use a Data Transfer Object (DTO)?

是否需要使用DTO?

这是一个单选题,有2个选项,使用上下键切换选项。
如果选择No, use the entity directly,可能会带来一些前后端耦合和传输效率的问题;所以这里选择[BETA] Yes, generate a DTO with MapStruct,虽然还是BETA版本,但实际项目中使用没出现什么问题。

1428428-20180718143331029-1017304655.png

单击回车继续。

2.9 Do you want to add filtering?

是否需要添加筛选功能?

这是一个单选题,有2个选项,使用上下键切换选项。
如果选择添加筛选功能,代码中会添加JPA动态查询的逻辑,但实际代码还需要手动修改,也许将来新版本会不断完善这个功能;这里为了简单起见,选择Not needed

1428428-20180718143858150-1519310917.png

单击回车继续。

2.10 Do you want pagination on your entity?

是否需要分页功能?

这是一个单选题,有3个选项,使用上下键切换选项。
第2个选项适合Web UI,第3个选项适合Mobile UI;这里选择Yes, with pagination links

1428428-20180718144114221-634623370.png

单击回车继续。

问答结束,开始生成实体代码

这个过程中会提示与已有文件有冲突,需要选择处理方式,提示的输入选项是Ynaxdh,说明如下:

Y: yes (Default)n: noa: yes to this question and all others (or always yes).x: abort (exit)d: show the differences between the old and the new fileh: help, list all options

这里选择a

1428428-20180718144703344-1894630588.png

单击回车。业务微服务的实体代码生成只包括后端代码,过程会比较快,通常1-2分钟就能完成。

1428428-20180719180813942-1509790434.png

至此,生成实体代码成功完成。可以执行maven测试命令来验证整个工程代码(如果生成工程代码时选择的构建工具是Maven)

$ mvn test

如果一切正常,命令行会输出成功信息:

1428428-20180719181037598-1747379245.png

3 业务微服务的数据库配置

3.1 启动一个数据库容器

在命令行,任意目录下,启动一个mysql容器;如果本地没有mysql:5的镜像,容器启动时会自动去docker store下载镜像。

$ docker container run --name microservice1-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d -p 32700:3306 mysql:5

3.2 在数据库中创建schema

通过客户端连接上刚启动的数据库容器,添加一个名为microservice1的schema。微服务启动时会自动在这个schema里面创建数据表。

3.3 修改微服务的数据库配置

spring.datasource.url中的端口号32700,与步骤2.1中-p参数指定的值保持一致。

spring.datasource.url中的schema名称microservice1,与步骤2.2中添加的schema名称保持一致。
spring.datasource.password的值my-secret-pw,与步骤2.1中MYSQL_ROOT_PASSWORD参数指定的值保持一致。

$ cd microservice1/$ vi src/main/resources/config/application-dev.yml# 修改数据库连接相关配置spring:    datasource:        url: jdbc:mysql://localhost:32700/microservice1?useUnicode=true&characterEncoding=utf8&useSSL=false        username: root        password: my-secret-pw

4 业务微服务的构建和启动

4.1 构建

进入microservice1目录,输入命令后回车:

$ cd microservice1/$ mvn -Pdev package

如果一切正常,命令行会输出构建成功信息:

1428428-20180719174637869-835563562.png

4.2 启动

进入microservice1目录,输入命令后回车:

$ nohup ./target/microservice-1-0.0.1-SNAPSHOT.war &

通过tail命令,查看启动日志:

$ tail -f nohup.out

如果一切正常,日志会输出启动成功信息:

1428428-20180719175039192-1898182999.png

4.3 注册到JHipster Registry

启动完成后,可以通过浏览器访问http://192.168.220.120:8761,登录名和密码默认都是admin

1428428-20180719175111209-574378434.png

可以看到在Instances Registered区域,microservice1已经注册。

注意:选择生成Microservice application类型的微服务时,不会生成前端资源,这也符合微服务架构的设计思想;如果需要生成微服务中实体(role)的前端资源,会在网关微服务中生成。

源码

系列文章

JHipster生成微服务架构的应用栈(三)- 业务微服务示例

转载于:https://www.cnblogs.com/yorkwu/p/9335937.html

你可能感兴趣的文章
libcurl以get方式请求服务器端文件
查看>>
OpenJudge 2786 Pell数列
查看>>
mysql 游标循环,嵌套游标循环
查看>>
win7 蛋疼的时间格式转化
查看>>
C++中二维数组的动态创建与处理
查看>>
SPOJ 10628 COT - Count on a tree(在树上建立主席树)(LCA)
查看>>
SpringInAction--Bean参数的自动注入
查看>>
素数筛
查看>>
centos /linux 修改目录或文件权限
查看>>
leetcode--
查看>>
访问者模式
查看>>
异步函数
查看>>
Openstack的vnc界面定制
查看>>
软考 2018年下半年卷 错题知识点记录
查看>>
仿网易邮箱5.0版UI
查看>>
winsow xp不能安装软件, 提示"中断" 是因为设置了 软件限制策略
查看>>
as3调用外部应用程序 as调用外部exe文件as3调用bat文件 未测试
查看>>
jQuery清空标签内容--防止内存泄露
查看>>
关于 HandlerMethodArgumentResolver 类 以及 WebArgumentResolver 类 自定义解析参数
查看>>
30个php操作redis常用方法代码例子
查看>>