JHipster生成微服务架构的应用栈(三)- 业务微服务示例
本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈。
环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里)
应用栈名称:appstack
认证微服务: uaa
业务微服务:microservice1
网关微服务:gateway
实体名:role
主机IP:192.168.220.120
1 生成业务微服务的工程代码
进入appstack/microservice1目录,输入命令后回车:
$ cd appstack/microservice1/ $ jhipster
命令行输出JHipster启动信息
现在开始问答环节
1.1 Which type of application would you like to create?
选择生成的微服务类型
这是一个单选题,有4个选项,使用上下键切换选项。
这里选择Microservice application
,所有自定义业务逻辑的微服务都可以选择这个类型。
单击回车继续。
1.2 What is the base name of your application?
输入微服务的名称
默认名称是当前目录名microservice1
,也可以自己输入名称。
注意:名称只能是大小写字母,数字和下划线的任意组合,不允许任何其它字符。
单击回车继续。
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
,也可以自己输入端口号,注意不要和别的微服务和进程的端口号冲突。
单击回车继续。
1.4 What is your default Java package name?
输入微服务的java包名
根据整个应用栈的目录层级,这里输入包名com.mycompany.appstack
。
注意:包名要符合Java标准规范的要求。
单击回车继续。
1.5 Which service discovery server do you want to use?
选择一个服务发现组件
这是一个单选题,有3个选项,使用上下键切换选项。
根据微服务体系规划,这里选择JHipster Registry
。
单击回车继续。
1.6 Which type of authentication would you like to use?
选择使用的认证类型
这是一个单选题,有3个选项,使用上下键切换选项。
根据微服务体系规划,这里选择Authentication with JHipster UAA server (the server must be generated separately)
。
单击回车继续。
1.7 What is the folder path of your UAA application?
输入uaa微服务所在的路径
这是一个相对于microservice1的相对路径,默认路径是../uaa
,这就是我们之前生成uaa工程的目录所在;如果之前生成的uaa目录名是myuaa,那么这里要输入../myuaa
。
注意:这个问题和上一个问题(1.6)的选择有关联性,上一个问题的不同选择,会导致后续不同问题的出现。
单击回车继续。
1.8 Which type of database would you like to use?
选择使用的数据库类型
这是一个单选题,有4个选项,使用上下键切换选项。
可以看到支持的数据库类型很多,这里选择默认选项SQL
。
单击回车继续。
1.9 Which production database would you like to use?
选择生产环境中使用的数据库
这是一个单选题,有5个选项,使用上下键切换选项。
可以看到目前支持5种SQL数据库,这里选择默认选项MySQL
。
单击回车继续。
1.10 Which development database would you like to use?
选择开发环境中使用的数据库
这是一个单选题,有3个选项,使用上下键切换选项。
H2调试起来简单,但为了和生产环境保持一致性,这里选择MySQL
。
单击回车继续。
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!
。
单击回车继续。
1.12 Would you like to use Maven or Gradle for building the backend?
选择使用Maven还是Gradle来构建微服务
这是一个单选题,有2个选项,使用上下键切换选项。
根据自己的开发环境需要,选择相应的构建工具,这里选择默认选项Maven
。
单击回车继续。
1.13 Which other technologies would you like to use?
选择需要用到的技术组件
这是一个多选题,有4个选项,使用上下键切换选项,使用空格键选中选项,使用a键全选,使用i键取消全选。
根据自己的技术架构规划,选择相应的技术组件,也可以都不选择。
单击回车继续。
1.14 Would you like to enable internationalization support?
是否需要国际化支持?
默认选择是Y
,如果不需要,输入n
;这里选择默认选项Y
。
单击回车继续。
1.15 Please choose the native language of the application
选择国际化支持中的母语
这是一个单选题,有37个选项,使用上下键切换选项。
注意:这个问题和上一个问题(1.14)的选择有关联性,上一个问题如果选择n
,这个问题不会出现。
单击回车继续。
1.16 Please choose additional languages to install
选择国际化支持中的其它语言
这是一个多选题,有37个选项,使用上下键切换选项,使用空格键选中选项,使用a键全选,使用i键取消全选。
根据自己的业务规划,选择相应的语言,也可以都不选择。
单击回车继续。
1.17 Besides JUnit and Jest, which testing frameworks would you like to use?
选择单元测试工具
这是一个多选题,有2个选项,使用上下键切换选项,使用空格键选中选项,使用a键全选,使用i键取消全选。
根据自己的技术架构规划,选择相应的技术组件,也可以都不选择。
单击回车继续。
1.18 Would you like to install other generators from the JHipster Marketplace?
是否需要从JHipster市场中安装其它的开发工具?
默认选择是N
,如果需要启用,输入y
;这里选择默认选项N
。
单击回车继续。
问答结束,开始生成工程代码
这个过程,根据电脑性能和网速的不同,通常需要1-3分钟。
至此,生成业务微服务工程代码成功完成。可以在appstack/microservice1目录下查看所有生成的文件。
2 生成业务微服务的实体代码
接下来,创建一个实体表role,并生成相关的后端代码。
在开始之前,通常需要先把数据库设计完成,一般情况下不需要手工添加id字段,JHipster默认会生成一个自增的int类型的id主键。
进入microservice1目录,输入命令后回车:
$ cd microservice1/ $ jhipster entity role
命令行输出实体已创建
现在开始创建字段
2.1 Do you want to add a field to your entity?
是否需要添加一个字段到实体?
默认选择是Y
,如果不需要添加,输入n
;这里选择默认选项Y
。
单击回车继续。
2.2 What is the name of your field?
输入字段名
这里输入第一个字段名roleName
,字段名要符合之前所选择的数据库的命名规范。
注意:这个问题和上一个问题(2.1)的选择有关联性,上一个问题如果选择n,这个问题不会出现。
单击回车继续。
2.3 What is the type of your field?
选择字段类型
这是一个单选题,有12个选项,使用上下键切换选项。
根据你的数据库设计,选择相应类型,这里选择String
类型。
单击回车继续。
2.4 Do you want to add validation rules to your field?
是否需要为这个字段添加规则?
默认选择是N
,如果需要添加,输入y
;这里选择默认选项N
。
单击回车继续。
2.5 Do you want to add a field to your entity?
是否需要继续添加字段?
成功添加完一个字段后,重新回到了第一个问题(2.1)。如果选择Y
,会重复2.1 ~ 2.4的过程;如果选择n
,则进入新的问题;这里输入n
。
单击回车继续。
2.6 Do you want to add a relationship to another entity?
是否需要添加一个与别的实体的关联关系?
默认选择是Y
,如果不需要添加,输入n
;因为目前还没有生成别的实体,这里输入n
。
单击回车继续。
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
。
单击回车继续。
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版本,但实际项目中使用没出现什么问题。
单击回车继续。
2.9 Do you want to add filtering?
是否需要添加筛选功能?
这是一个单选题,有2个选项,使用上下键切换选项。
如果选择添加筛选功能,代码中会添加JPA动态查询的逻辑,但实际代码还需要手动修改,也许将来新版本会不断完善这个功能;这里为了简单起见,选择Not needed
。
单击回车继续。
2.10 Do you want pagination on your entity?
是否需要分页功能?
这是一个单选题,有3个选项,使用上下键切换选项。
第2个选项适合Web UI,第3个选项适合Mobile UI;这里选择Yes, with pagination links
。
单击回车继续。
问答结束,开始生成实体代码
这个过程中会提示与已有文件有冲突,需要选择处理方式,提示的输入选项是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-2分钟就能完成。
至此,生成实体代码成功完成。可以执行maven测试命令来验证整个工程代码(如果生成工程代码时选择的构建工具是Maven)
$ mvn test
如果一切正常,命令行会输出成功信息:
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
如果一切正常,命令行会输出构建成功信息:
4.2 启动
进入microservice1目录,输入命令后回车:
$ nohup ./target/microservice-1-0.0.1-SNAPSHOT.war &
通过tail命令,查看启动日志:
$ tail -f nohup.out
如果一切正常,日志会输出启动成功信息:
4.3 注册到JHipster Registry
启动完成后,可以通过浏览器访问http://192.168.220.120:8761
,登录名和密码默认都是admin
:
可以看到在Instances Registered区域,microservice1已经注册。
注意:选择生成Microservice application
类型的微服务时,不会生成前端资源,这也符合微服务架构的设计思想;如果需要生成微服务中实体(role)的前端资源,会在网关微服务中生成。
系列文章
JHipster生成微服务架构的应用栈(一)- 准备工作
JHipster生成微服务架构的应用栈(二)- 认证微服务示例
JHipster生成微服务架构的应用栈(三)- 业务微服务示例
JHipster生成微服务架构的应用栈(四)- 网关微服务示例
JHipster生成微服务架构的应用栈(五)- 容器编排示例
你现在的气质里,藏着你走过的路,读过的书,爱过的人。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
在Asp.Net Core中使用中间件保护非公开文件
在企业开发中,我们经常会遇到由用户上传文件的场景,比如某OA系统中,由用户填写某表单并上传身份证,由身份管理员审查,超级管理员可以查看。 就这样一个场景,用户上传的文件只能有三种人看得见(能够访问) 上传文件的人 身份审查人员 超级管理员 那么,这篇博客中我们将一起学习如何设计并实现一款文件授权中间件 问题分析 如何判断文件属于谁 要想文件能够被授权,文件的命名就要有规律,我们可以从文件命名中确定文件是属于谁的,例如本文例可以设计文件名为这样 工号-GUID-[Front/Back] 例如: 100211-4738B54D3609410CBC785BCD1963F3FA-Front,这代表由100211上传的身份证正面 判断文件属于哪个功能 一个企业系统中上传文件的功能可能有很多: 某个功能中上传身份证 某个功能中上传合同 某个功能上传发票 我们的区分方式是使用路径,例如本文例使用 /id-card /contract /invoices 不能通过StaticFile中间件访问 由StaticFile中间件处理的文件都是公开的,由这个中间件处理的文件只能是公开的js、css、image...
- 下一篇
JHipster生成微服务架构的应用栈(四)- 网关微服务示例
本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈。 环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里) 应用栈名称:appstack 认证微服务: uaa 业务微服务:microservice1 网关微服务:gateway 实体名:role 主机IP:192.168.220.120 1 生成网关微服务的工程代码 进入appstack/gateway目录,输入命令后回车: $ cd gateway/ $ jhipster 命令行输出JHipster启动信息 现在开始问答环节 1.1 Which type of application would you like to create? 选择生成的应用类型 这是一个单选题,有4个选项,使用上下键切换选项。 这里选择Microservice gateway,也就是网关微服务。 单击回车继续。 1.2 What is the base name of your application? 输入应用的名称 默认名称是当前目录名gateway,也可以自己输入名称;这里使用默认名称。注意:名称只能是大小写字母,...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Linux系统CentOS6、CentOS7手动修改IP地址
- Red5直播服务器,属于Java语言的直播服务器
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7安装Docker,走上虚拟化容器引擎之路