JHipster生成单体架构的应用示例

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 本文演示如何用JHipster生成一个单体架构风格的应用。

本文演示如何用JHipster生成一个单体架构风格的应用。
环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里

应用名:app1
实体名:role
主机IP:192.168.220.120

首先创建一个应用目录

$ mkdir app1

1 生成工程代码

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

$ cd app1/
$ jhipster

命令行输出JHipster启动信息

现在开始问答环节

1.1 Which type of application would you like to create?

选择生成的应用类型
这是一个单选题,有4个选项,使用上下键切换选项。
因为这个例子是生成单体架构的应用,所以这里选择默认选项Monolithic application,也就是单体架构的应用。

单击回车继续。

1.2 What is the base name of your application?

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

单击回车继续。

1.3 What is your default Java package name?

输入应用的java包名
默认java包名是com.mycompany.myapp,也可以自己输入包名;这里使用默认包名。
注意:包名要符合Java标准规范的要求。

单击回车继续。

1.4 Do you want to use the JHipster Registry to configure, monitor and scale your application?

是否需要使用JHipster Registry来实现应用的配置,监控和弹性缩放?
这是一个单选题,有2个选项,使用上下键切换选项。
因为这个例子是生成单体架构的应用,不需要以上特性,所以这里选择默认选项No

单击回车继续。

1.5 Which type of authentication would you like to use?

选择应用的认证类型
这是一个单选题,有3个选项,使用上下键切换选项。
对于无状态的单体应用,JWT最适合,所以这里选择默认选项JWT authentication

单击回车继续。

1.6 Which type of database would you like to use?

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

单击回车继续。

1.7 Which production database would you like to use?

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

单击回车继续。

1.8 Which development database would you like to use?

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

单击回车继续。

1.9 Do you want to use the Spring cache abstraction?

是否需要使用Spring Cache?
这是一个单选题,有5个选项,使用上下键切换选项。
对于单体架构的应用,不考虑多个实例的场景,使用本地缓存最简单,所以这里选择Yes, with the Ehcache implementation (local cache, for a single node)

单击回车继续。

1.10 Do you want to use Hibernate 2nd level cache?

是否需要使用Hibernate二级缓存?
默认选择是Y,如果不需要使用,输入n;这里选择默认选项Y
注意:这个问题和上一个问题(1.9)的选择有关联性,上一个问题的不同选择,会导致后续不同问题的出现。

单击回车继续。

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

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

单击回车继续。

1.12 Which other technologies would you like to use?

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

单击回车继续。

1.13 Which Framework would you like to use for the client?

选择前端框架
这是一个单选题,有2个选项,使用上下键切换选项。
根据自己的技术架构规划,选择相应的前端框架,这里选择默认选项Angular 6

单击回车继续。

1.14 Would you like to enable SASS support using the LibSass stylesheet preprocessor?

是否需要启用样式表预处理来支持SASS?
默认选择是N,如果需要启用,输入y;这里选择默认选项N

单击回车继续。

1.15 Would you like to enable internationalization support?

是否需要国际化支持?
默认选择是Y,如果不需要,输入n;这里选择默认选项Y

单击回车继续。

1.16 Please choose the native language of the application

选择国际化支持中的母语
这是一个单选题,有37个选项,使用上下键切换选项。
注意:这个问题和上一个问题(1.15)的选择有关联性,上一个问题如果选择n,这个问题不会出现。

单击回车继续。

1.17 Please choose additional languages to install

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

单击回车继续。

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

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

单击回车继续。

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

是否需要从JHipster市场中安装其它的开发工具?
默认选择是N,如果需要启用,输入y;这里选择默认选项N

单击回车继续。

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

这个过程可能会有点长,根据电脑性能和网速的不同,通常需要3-5分钟。

至此,生成工程代码成功完成。可以在app1根目录下查看所有生成的文件。

2 生成实体代码

接下来,创建一个实体表role,并生成相关的后端代码和前端资源。
在开始之前,通常需要先把数据库设计完成,一般情况下不需要手工添加id字段,JHipster默认会生成一个自增的int类型的id主键。
进入app1目录,输入命令后回车:

$ cd app1/
$ 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 生成前端资源

之前在生成工程代码时选择的前端组件是Angular,所以前端资源会按如下流程生成:
a, 生成工程代码或者实体代码的任务完成后,会自动触发执行yarn install
b, yarn install执行完成后,会自动触发执行webpack:build
c, webpack:build执行完成后,所有前端资源就已经生成了,默认是在app1/target/www目录下。

调试前端页面

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

$ cd app1/
$ yarn start

如果一切正常,会启动Webpack dev-server;

可通过浏览器访问http://192.168.220.120:9000查看前端调试页面。此时所有前端资源的修改,都会同步更新到浏览器上。

4 数据库配置

4.1 启动一个数据库容器

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

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

4.2 在数据库中创建schema

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

4.3 修改应用的数据库配置

spring.datasource.url中的端口号32768,与步骤4.1中-p参数指定的值保持一致。
spring.datasource.url中的schema名称app1,与步骤4.2中添加的schema名称保持一致。
spring.datasource.password的值my-secret-pw,与步骤4.1中MYSQL_ROOT_PASSWORD参数指定的值保持一致。

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

5 构建和启动

5.1 构建

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

$ cd app1/
$ mvn -Pdev package

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

5.2 启动

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

nohup ./target/app-1-0.0.1-SNAPSHOT.war &

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

$ tail -f nohup.out

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

6 访问应用UI

6.1 访问首页

通过浏览器访问http://192.168.220.120:8080,进入应用的首页:

点击右上角账号 - 登录, 默认用户名和密码都是admin

6.2 实体页面

登录之后可以看到页头上的菜单,数据菜单下就是所有实体的操作页面,这里能看到生成的实体role的子菜单:

点击role子菜单,进入role实体的操作页面,这里已经生成了基本的增删改查功能,如果需要更多功能,就要定制开发了:

6.3 管理页面

这里包括了如下功能页面:

  • 用户管理
  • 资源监控
  • 服务状态
  • 配置
  • 审核
  • 日志
  • API

页面功能都很直观,点进去看一看就知道了。

6.4 语言页面

这里就是国际化支持的页面,生成工程代码时选择了哪些语言,这里就会提供哪些语言的子菜单:

相关文章

JHipster生成微服务架构的应用栈

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
2月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
446 3
|
8天前
|
人工智能 JavaScript 前端开发
GenSX (不一样的AI应用框架)架构学习指南
GenSX 是一个基于 TypeScript 的函数式 AI 工作流框架,以“函数组合替代图编排”为核心理念。它通过纯函数组件、自动追踪与断点恢复等特性,让开发者用自然代码构建可追溯、易测试的 LLM 应用。支持多模型集成与插件化扩展,兼具灵活性与工程化优势。
56 6
|
24天前
|
人工智能 Cloud Native 中间件
划重点|云栖大会「AI 原生应用架构论坛」看点梳理
本场论坛将系统性阐述 AI 原生应用架构的新范式、演进趋势与技术突破,并分享来自真实生产环境下的一线实践经验与思考。
|
1月前
|
机器学习/深度学习 人工智能 vr&ar
H4H:面向AR/VR应用的NPU-CIM异构系统混合卷积-Transformer架构搜索——论文阅读
H4H是一种面向AR/VR应用的混合卷积-Transformer架构,基于NPU-CIM异构系统,通过神经架构搜索实现高效模型设计。该架构结合卷积神经网络(CNN)的局部特征提取与视觉Transformer(ViT)的全局信息处理能力,提升模型性能与效率。通过两阶段增量训练策略,缓解混合模型训练中的梯度冲突问题,并利用异构计算资源优化推理延迟与能耗。实验表明,H4H在相同准确率下显著降低延迟和功耗,为AR/VR设备上的边缘AI推理提供了高效解决方案。
259 0
|
14天前
|
机器学习/深度学习 自然语言处理 算法
48_动态架构模型:NAS在LLM中的应用
大型语言模型(LLM)在自然语言处理领域的突破性进展,很大程度上归功于其庞大的参数量和复杂的网络架构。然而,随着模型规模的不断增长,计算资源消耗、推理延迟和部署成本等问题日益凸显。如何在保持模型性能的同时,优化模型架构以提高效率,成为2025年大模型研究的核心方向之一。神经架构搜索(Neural Architecture Search, NAS)作为一种自动化的网络设计方法,正在为这一挑战提供创新性解决方案。本文将深入探讨NAS技术如何应用于LLM的架构优化,特别是在层数与维度调整方面的最新进展,并通过代码实现展示简单的NAS实验。
|
2月前
|
Web App开发 Linux 虚拟化
Omnissa Horizon 8 2506 (8.16) - 虚拟桌面基础架构 (VDI) 和应用软件
Omnissa Horizon 8 2506 (8.16) - 虚拟桌面基础架构 (VDI) 和应用软件
135 0
Omnissa Horizon 8 2506 (8.16) - 虚拟桌面基础架构 (VDI) 和应用软件
|
2月前
|
机器学习/深度学习 数据采集 存储
技术赋能下的能源智慧管理:MyEMS 开源系统的架构创新与应用深化
在全球能源转型与“双碳”战略推动下,MyEMS作为基于Python的开源能源管理系统,凭借模块化架构与AI技术,助力重点用能单位实现数字化、智能化能源管理。系统支持多源数据采集、智能分析、设备数字孪生与自适应优化控制,全面满足国家级能耗监测要求,并已在制造、数据中心、公共建筑等领域成功应用,助力节能降碳,推动绿色可持续发展。
67 0
|
3月前
|
人工智能 数据可视化 Java
什么是低代码(Low-Code)?低代码核心架构技术解析与应用展望
低代码开发正成为企业应对业务增长与IT人才短缺的重要解决方案。相比传统开发方式效率提升60%,预计2026年市场规模达580亿美元。它通过可视化界面与少量代码,让非专业开发者也能快速构建应用,推动企业数字化转型。随着AI技术发展,低代码与AIGC结合,正迈向智能化开发新时代。
|
3月前
|
存储 人工智能 缓存
AI应用爆发式增长,如何设计一个真正支撑业务的AI系统架构?——解析AI系统架构设计核心要点
本文AI专家三桥君系统阐述了AI系统架构设计的核心原则与关键技术,提出演进式、先进性、松耦合等五大架构法则,强调高并发、高可用等系统质量属性。通过垂直扩展与水平扩展策略实现弹性伸缩,采用多类型数据存储与索引优化提升性能。三桥君介绍了缓存、批处理等性能优化技术,以及熔断隔离等容灾机制,构建全链路监控体系保障系统稳定性。为构建支撑亿级业务的AI系统提供了方法论指导和技术实现路径。
424 0

热门文章

最新文章