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 |