JH2️⃣JDL①简介 & 应用配置

参考资料

1、JDL

JHipster Domain Language

JHipster 领域语言

  • 可通过文件的形式,以特定语法描述应用程序、部署、实体及其关系。
  • 相比命令行的问答方式,JDL 的可视化管理更方便,具有复用性。

1.1、JDL 形式

有 2 种形式,建议使用 JDL 文件,单行 JDL 了解即可。

本文基于 JDL 文件生成应用程序。

JDL 文件 单行 JDL
创建 手动创建,
或使用 JDL-studioIDE 插件
-
使用 指定本地文件名远程 URL,生成应用 输入配置内容,生成应用
特点 以文件形式存在(后缀为 .jh.jdl)
复用性高,可远程使用
省略了创建文件的步骤,但不具有复用性

1.2、生成应用

在服务器 CLI 中执行指令生成应用。

  1. 指令格式

    jhipster jdl [JDL文件名 ...] [--属性]
    
  2. 属性--force--json-only

    # 强制重新生成所有实体,覆盖对实体文件的所有本地更改
    jhipster jdl xxx.jdl --force
    # 跳过实体生成
    jhipster jdl xxx.jdl --json-only
    
  3. 多个文件:若有多个 JDL 文件用于生成应用程序,无需手动将文件内容合并,可同时运行

    # 单个文件
    jhipster jdl aaa.jdl
    # 多个文件
    jhipster jdl aaa.jdl bbb.jdl
    
  4. 生成内容

    • 生成应用程序:创建一个文件夹用于生成应用,在应用程序文件夹中执行指令。
    • 只生成实体:在 JHipster 应用程序的根文件夹中执行。

1.3、JDL 内容

完成应用程序配置,即可生成应用程序的基本骨架

其余内容用于完善项目内容。

  1. 应用程序配置本文内容
  2. 实体和属性枚举关联关系、常量
  3. 实体选项
  4. 部署

2、应用程序配置

application 是所有配置的 “根”

  • config:编写应用程序配置,Key Value 键值对形式。

  • entities(可选):指定要生成的实体,若不指定则生成所有实体。

  • options(可选):为实体指定选项,如 dtopaginateservice 等。

    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
posted @ 2022-05-18 18:16  Jaywee  阅读(162)  评论(0编辑  收藏  举报

👇