JH2️⃣JDL
作者:互联网
参考资料
1、JDL
JHipster Domain Language
JHipster 领域语言
- 可通过文件的形式,以特定语法描述应用程序、部署、实体及其关系。
- 相比命令行的问答方式,JDL 的可视化管理更方便,具有复用性。
1.1、JDL 形式
有 2 种形式,建议使用 JDL 文件,单行 JDL 了解即可。
本文基于 JDL 文件生成应用程序。
JDL 文件 | 单行 JDL | |
---|---|---|
创建 | 手动创建, 或使用 JDL-studio 或 IDE 插件 |
- |
使用 | 指定本地文件名或远程 URL,生成应用 | 输入配置内容,生成应用 |
特点 | 以文件形式存在(后缀为 .jh 或 .jdl) 复用性高,可远程使用 |
省略了创建文件的步骤,但不具有复用性 |
1.2、生成应用
在服务器 CLI 中执行指令生成应用。
-
指令格式
jhipster jdl [JDL文件名 ...] [--属性]
-
属性:
--force
和--json-only
# 强制重新生成所有实体,覆盖对实体文件的所有本地更改 jhipster jdl xxx.jdl --force # 跳过实体生成 jhipster jdl xxx.jdl --json-only
-
多个文件:若有多个 JDL 文件用于生成应用程序,无需手动将文件内容合并,可同时运行
# 单个文件 jhipster jdl aaa.jdl # 多个文件 jhipster jdl aaa.jdl bbb.jdl
-
生成内容
- 生成应用程序:创建一个文件夹用于生成应用,在应用程序文件夹中执行指令。
- 只生成实体:在 JHipster 应用程序的根文件夹中执行。
1.3、JDL 内容
完成应用程序配置,即可生成应用程序的基本骨架。
其余内容用于完善项目内容。
2、应用程序配置
application
是所有配置的 “根”
-
config
:编写应用程序配置,Key Value
键值对形式。 -
entities
(可选):指定要生成的实体,若不指定则生成所有实体。 -
options
(可选):为实体指定选项,如dto
、paginate
、service
等。application { config { key1 value1 key2 value2 ... } [entities <application entity list>] [<options>] }
2.1、config
支持的配置
可选值 | 默认值 | 说明 | |
---|---|---|---|
applicationType | monolith, microservice, gateway |
monolith | |
authenticationType | jwt, session, oauth2 |
jwt | |
baseName | jhipster | 应用程序名称 | |
blueprint | 已过时,字符型 | ||
blueprints | 见 Marketplace | 蓝图 | |
buildTool | maven, gradle |
maven | |
cacheProvider | caffeine, ehcache, hazelcast, infinispan, memcached, redis, no |
ehcache/hazelcast | ehcache 用于单体/网关, hazelcast 用于微服务 |
clientFramework | angularX, react |
angularX | |
clientPackageManager | npm, yarn |
npm | |
clientTheme | Something or none | none | |
clientThemeVariant | Something or primary | ||
databaseType | sql, mongodb, cassandra, couchbase, no |
sql | |
devDatabaseType | h2Disk, h2Memory, * |
h2Disk | 开发数据库 |
dtoSuffix | DTO | fasle 表示不添加后缀 | |
enableHibernateCache | true | ||
enableSwaggerCodegen | false | ||
enableTranslation | true | ||
entitySuffix | fasle 表示不添加后缀 | ||
jhiPrefix | jhi | ||
languages | JHipster 支持的语言 | [en, fr] | 必须有中括号 |
messageBroker | kafka, false |
false | |
nativeLanguage | JHipster 支持的语言 | en | |
packageName | com.mycompany.myapp | Java 包名 | |
prodDatabaseType | mysql, mariadb, mssql, postgresql, oracle, no |
mysql | 生产数据库 |
reactive | false | ||
searchEngine | elasticsearch, false |
false | |
serverPort | 8080, 8081 or 9999 | 端口号,默认值取决于应用程序类型 | |
serviceDiscoveryType | eureka, consul, no |
false | |
skipClient | false | ||
skipServer | false | ||
skipUserManagement | false | ||
testFrameworks | cypress, protractor, cucumber, gatling |
[] | 必须有中括号 |
websocket | spring-websocket, false |
false |
2.2、entities
JDL 可定义多个
entity
(实体),在此基础上可使用entities
选项
-
作用:指定要生成的实体,若不指定则生成所有实体。
-
格式:
# 指定要生成的实体 entities e1, e2, ... # 指定不生成的实体 entities * expect e1, e2, ...
-
示例:app1 使用实体 A 和 B,app2 使用实体 A 和 D 和 E
application { config { baseName app1 } entities A, B } application { config { baseName app2 } entities * except B, C } entity A entity B entity C entity D entity E
2.3、options
为实体指定选项,分为一元(unary)、二元(binary)
选项类型 | 可选值 | 默认值 | 说明 | |
---|---|---|---|---|
skipClient | unary | false | 不生成前端代码 | |
skipServer | unary | false | 不生成服务器代码 | |
noFluentMethod | unary | false | ||
filter | unary | false | 若设为 true 但未设置service ,则使用serviceClass |
|
readOnly | unary | false | 使实体只读 | |
dto | binary | mapstruct, no |
no | 为实体创建 DTO。 若设为 true 但未设置 service ,则使用serviceClass |
service | binary | serviceClass, serviceImpl, no |
no | |
paginate | binary | pagination, infinite-scroll, no |
no | 若使用 Cassandra 数据库,禁止分页 |
search | binary | elasticsearch, no |
no | 前提是启用 searchEngine 选项 |
microservice | binary | custom value | 为微服务应用程序内声明的每个实体自动添加 | |
angularSuffix | binary | custom value | ||
clientRootFolder | binary | custom value |
3、实践:单体应用
生成一个
monolith
应用,需求如下
- 应用名称:myMono
- Java 包名:indi.jaywee.mono
- 身份验证类型:JWT
- 数据库:MySQL,不使用缓存
- 项目构建工具:Maven
- 前端框架:Vue
3.1、创建 JDL 文件
-
开启 JDL-studio,输入配置内容。
application { config { applicationType monolith baseName myMono packageName indi.jaywee.mono authenticationType jwt databaseType sql prodDatabaseType mysql devDatabaseType mysql cacheProvider no buildTool maven clientFramework vue } }
-
下载 JDL 文件
-
默认文件名
jhipster-jdl
,建议重命名为应用程序名称,以便标识。
3.2、生成应用
-
创建一个文件夹用于生成应用程序,切换到该文件夹。
-
使用
Xftp
上传 JDL 文件。 -
执行
jhipster
指令,等待应用程序生成。-
jhipster jdl myMono.jdl
-
3.3、数据库配置
-
为应用程序创建数据库
CREATE DATABASE 数据库名;
-
修改配置文件
-
路径:
项目文件夹\src\main\resources\config\application-dev.yml
-
修改内容:datasource 的 URL、账号密码
-
保存,确认配置成功修改(可在 Linux 中通过
cat
命令查看)
-
3.4、运行
-
创建一个 Screen,切换到应用程序所在文件夹,运行应用。
screen -S jh-mono cd /tmp/jhipster/myMono ./mvnw
-
运行成功:注意此处的 localhost 表示的是服务器的主机号。
-
访问应用程序:可正常访问。
4、实践:微服务(❗)
生成微服务集合,需求如下
Registry Center
:从 Github 下载。microservice
- 应用名称:myMicro
- 服务端口号:8081
- Java 包名:indi.jaywee.micro
- 身份验证类型:JWT
- 数据库:MySQL,不使用缓存
- 项目构建工具:Maven
- 国际化:英文、中文
gateway
- 应用名称:myGateway
- 服务端口号:8080
- Java 包名:indi.jaywee.gateway
- 身份验证类型:JWT
- 数据库:MySQL,不使用缓存
- 项目构建工具:Maven
- 前端框架:Vue
- 国际化:英文、中文
4.1、注册中心
以 GitHub 克隆方式安装
Registry Center
-
创建应用程序目录,用于生产微服务应用。
mkdir -p /tmp/jhipster/myMicro cd /tmp/jhipster/myMicro
-
将 GitHub 项目克隆到当前目录。
git clone https://github.com/jhipster/jhipster-registry
4.2、微服务应用 & 网关
4.2.1、创建 JDL 文件
单个 JDL 文件可声明多个 application,
生成应用时会自动为不同 application 创建子文件夹。
-
在 JDL-studio 输入配置内容
application { config { applicationType microservice baseName myMicro serverPort 8081 packageName indi.jaywee.micro authenticationType jwt databaseType sql prodDatabaseType mysql devDatabaseType mysql cacheProvider no buildTool maven nativeLanguage en languages [zh-cn] } } application { config { applicationType gateway baseName myGateway serverPort 8080 packageName indi.jaywee.gateway authenticationType jwt databaseType sql prodDatabaseType mysql devDatabaseType mysql cacheProvider no buildTool maven clientFramework vue nativeLanguage en languages [zh-cn] } }
-
下载 JDL 文件:默认文件名
jhipster-jdl
,建议重命名为应用程序名称,以便标识。
4.2.2、生成应用
-
切换到应用程序文件夹。
cd /tmp/jhipster/myMicro
-
使用
Xftp
上传 JDL 文件。 -
执行
jhipster
指令,等待应用程序生成。-
jhipster jdl myMicro.jdl
-
应用程序会在子文件夹中生成。
-
4.2.3、数据库配置
-
为应用程序创建数据库(微服务应用和网关共用)
CREATE DATABASE 数据库名;
-
修改配置文件:微服务应用、网关都需修改。
-
路径:
项目文件夹\src\main\resources\config\application-dev.yml
-
修改内容
-
微服务应用:datasource 的 URL、账号密码
-
网关应用:
liquibase
的 URL,r2dbc
的 URL、用户名、密码
-
-
保存,确认配置成功修改(可在 Linux 中通过
cat
命令查看)
-
4.3、运行
-
步骤:启动注册中心(8761)→ 启动应用(8081) → 启动网关(8081)
-
方式:通过
screen
分别开启 3 个会话,以便管理。# 列出所有会话 screen -ls # 新建会话 screen -S 会话名 # 删除会话 screen -S 会话名 -X quit # 退出会话(挂起):快捷键 Ctrl+A+D screen -d 会话名 # 回到会话 screen -r 会话名
4.3.1、启动
启动 Registry Center
-
创建一个会话:用于启动注册中心,创建后自动进入会话。
screen -S jh-registry
-
切换到
Registry center
所在目录,执行./mvnw
启动项目。 -
启动成功,输出 URL 信息
-
访问 Registry center
-
服务器 IP 地址:云服务器公网 IP、虚拟机静态 IP
-
默认端口号:8761
-
默认账号密码:admin
-
-
挂起当前会话
# 快捷键 Ctrl+A+D screen -d jh-registry
按照以上方式,分别启动 myMicro 和 myGateway
4.3.2、访问
服务启动后即可访问,如下所示
-
Registry Center
:已注册 3 个示例 -
myMicro
:成功访问 -
myGateway
:成功访问
标签:jdl,false,JDL,应用程序,生成,jhipster,JH2 来源: https://www.cnblogs.com/secretmrj/p/16262785.html