ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JH2️⃣JDL

2022-05-18 18:35:25  阅读:133  来源: 互联网

标签:jdl false JDL 应用程序 生成 jhipster JH2


参考资料

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

3、实践:单体应用

生成一个 monolith 应用,需求如下

  • 应用名称:myMono
  • Java 包名:indi.jaywee.mono
  • 身份验证类型:JWT
  • 数据库:MySQL,不使用缓存
  • 项目构建工具:Maven
  • 前端框架:Vue

3.1、创建 JDL 文件

  1. 开启 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
    	}
    }
    
  2. 下载 JDL 文件

    image-20220518093925828

  3. 默认文件名 jhipster-jdl,建议重命名为应用程序名称,以便标识。

    image-20220518155150952

3.2、生成应用

  1. 创建一个文件夹用于生成应用程序,切换到该文件夹。

    image-20220518093819777

  2. 使用 Xftp 上传 JDL 文件。

    image-20220518094106586

  3. 执行 jhipster 指令,等待应用程序生成。

    • jhipster jdl myMono.jdl
      
    • image-20220518160120261

3.3、数据库配置

参考 JH2️⃣部署:单体应用、微服务

  1. 为应用程序创建数据库

    CREATE DATABASE 数据库名;
    
  2. 修改配置文件

    • 路径项目文件夹\src\main\resources\config\application-dev.yml

    • 修改内容:datasource 的 URL、账号密码

    • 保存,确认配置成功修改(可在 Linux 中通过 cat 命令查看)

      image-20220511155214798

3.4、运行

  • 创建一个 Screen,切换到应用程序所在文件夹,运行应用。

    screen -S jh-mono
    cd /tmp/jhipster/myMono
    ./mvnw
    
  • 运行成功:注意此处的 localhost 表示的是服务器的主机号。

    image-20220518161032618

  • 访问应用程序:可正常访问。

    image-20220518161245459

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

  1. 创建应用程序目录,用于生产微服务应用

    mkdir -p /tmp/jhipster/myMicro
    cd /tmp/jhipster/myMicro
    
  2. 将 GitHub 项目克隆到当前目录

    git clone https://github.com/jhipster/jhipster-registry
    

4.2、微服务应用 & 网关

4.2.1、创建 JDL 文件

单个 JDL 文件可声明多个 application,

生成应用时会自动为不同 application 创建子文件夹。

  1. 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]
    	}
    }
    
  2. 下载 JDL 文件:默认文件名 jhipster-jdl,建议重命名为应用程序名称,以便标识。

    image-20220518164545625

4.2.2、生成应用

  1. 切换到应用程序文件夹。

    cd /tmp/jhipster/myMicro
    
  2. 使用 Xftp 上传 JDL 文件。

    image-20220518164848285

  3. 执行 jhipster 指令,等待应用程序生成。

    • jhipster jdl myMicro.jdl
      
    • image-20220518165330327

    • 应用程序会在子文件夹中生成。

      image-20220518165407831

4.2.3、数据库配置

参考 JH2️⃣部署:单体应用、微服务

  1. 为应用程序创建数据库(微服务应用和网关共用)

    CREATE DATABASE 数据库名;
    
  2. 修改配置文件:微服务应用、网关都需修改。

    • 路径项目文件夹\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

  1. 创建一个会话:用于启动注册中心,创建后自动进入会话。

    screen -S jh-registry
    
  2. 切换到 Registry center 所在目录,执行 ./mvnw 启动项目。

  3. 启动成功,输出 URL 信息

  4. 访问 Registry center

    • 服务器 IP 地址:云服务器公网 IP、虚拟机静态 IP

    • 默认端口号:8761

    • 默认账号密码:admin

  5. 挂起当前会话

    # 快捷键 Ctrl+A+D
    screen -d jh-registry
    

按照以上方式,分别启动 myMicro 和 myGateway

4.3.2、访问

服务启动后即可访问,如下所示

  • Registry Center:已注册 3 个示例

    image-20220518180859435

  • myMicro:成功访问

    image-20220518180941638

  • myGateway:成功访问

    image-20220518181013817

标签:jdl,false,JDL,应用程序,生成,jhipster,JH2
来源: https://www.cnblogs.com/secretmrj/p/16262785.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有