1 Star 0 Fork 835

北京懿融容科技发展有限公司 / JeeSite Spring Cloud

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

引言

JeeSite Cloud 具备 JeeSite 4.x 的所有功能,是在 JeeSite 4.x 基础之上,完成的 Spring Cloud 分布式系统套件的整合。它利用 JeeSite 4.x 的开发便利性巧妙地简化了分布式系统开发。

JeeSite Cloud 并没有重复制造轮子,它只是将目前比较成熟的、经得起实际考验的服务框架组合起来,通过 Spring Boot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

集成阿里优秀组件 Nacos 服务治理与配置中心、集成 Sentinel 流量卫兵;集成 Zipkin 链路追踪;集成 LCN 分布式事务等,详见技术选型章节。

特点:用经典开发模式,开发分布式应用,两个字【简单】,一个字【快】。

源码仓库地址:https://gitee.com/thinkgem/jeesite4-cloud

优势(只写别人没有的)

  1. 在 JeeSite 单应用基础之上,完成的 Cloud 功能,使用经典开发模式,就像开发单应用一样开发分布式应用
  2. 它提供了微服务模块的代码生成工具,快速生成开发微服务功能,包含微服务的发布和调用接口
  3. 我们将 api 和 client 合体为一个工程,自动适应自己调用自己 client 的影响,简化工程数量
  4. 解决 Feign 接口不能多重继承问题,如一些通用操作(增删改查)微服务接口基类实现,这些都不用自己写了
  5. 统一的授权认证、基础数据微服务,都已经提供查询 client 接口,其他微服务应用模块中可直接获取用户、组织、权限、字典等基础数据。微服务之间调用中,出现的会话及缓存的一致性统一得到解决。
  6. 如 UserUtils、EmpUtils、EmpUserService、OfficeService 等等众多的基础服务工具类,都可以直接从基础数据的微服务中获取数据,你不必考虑跨 web 服务的数据交互,我们已经帮你做了。
  7. 微服务组件 Nacos、Sentinel、Zipkin 提供源码方式启动部署,方便开发调试。
  8. 写一个别人有的,使用柔性事务解决,跨 web 服务的情况,入侵性非常小哦。
  9. 集成工作流,提供BPM引擎独立的服务,客户端只需调用API,无需加载复杂流程引擎。
  10. 其它优势(按 Ctrl + Shift 点击链接):http://jeesite.com/docs/feature/

技术选型

  • 分布式系统套件版本:Spring Cloud 2020.0.4 + Alibaba 2021.1
  • 服务治理注册与发现:Spring Cloud Eureka / Consul / Nacos 2.0
  • 分布式统一配置中心:Spring Cloud Config / Nacos 2.0
  • 网关路由代理调用:Spring Cloud Gateway (动态网关)
  • 声明式服务调用:Spring Cloud OpenFeign
  • 客户端负载均衡:Spring Cloud LoadBalancer
  • 阿里流量防卫兵:Sentinel 1.8 (限流、熔断降级、负载保护)
  • 分布式事务框架:Seata 1.4 / TX-LCN 5.0 (可选组件)
  • 分布式链路追踪:Zipkin 2.23 (可选组件)
  • 工作流引擎框架:Flowable 6.6 (可选组件)

子项目介绍

  • 服务注册:jeesite-cloud-eureka : http://127.0.0.1:8970
  • 配置中心:jeesite-cloud-config : http://127.0.0.1:8971/project/default
  • 服务注册和配置中心 Nacos 版本(推荐) :http://127.0.0.1:8848/nacos/index.html
  • 网关路由:jeesite-cloud-gateway : http://127.0.0.1:8980/js/a/login
  • 核心模块(统一授权认证服务、平台基础数据服务):
    • 核心主项目:jeesite-cloud-module-core : http://127.0.0.1:8981/js
    • 客户端项目(提供其它模块调用):jeesite-cloud-module-core-client
  • 测试模块1(单表增删改查示例):
    • 模块1主项目:jeesite-cloud-module-test1 : http://127.0.0.1:8982/js
    • 模块1客户端项目(提供其它模块调用):jeesite-cloud-module-test1-client
  • 测试模块2(树表增删改查示例):
    • 模块2主项目:jeesite-cloud-module-test2 : http://127.0.0.1:8983/js
    • 模块2客户端项目(提供其它模块调用):jeesite-cloud-module-test2-client
  • 测试模块3(代码生成的模块和代码生成的增删改查,该模块完全没有手写,全部为生成的):
    • 模块3主项目:jeesite-cloud-module-test3 : http://127.0.0.1:8985/js
    • 模块3客户端项目(提供其它模块调用):jeesite-cloud-module-test3-client
  • 业务流程基础服务(流程引擎服务,客户端只需调用接口,无需加载引擎逻辑):
    • 流程主项目:jeesite-cloud-module-bpm : http://127.0.0.1:8990
    • 客户端项目(提供其它模块调用):jeesite-cloud-module-bpm-client
  • 分布式事务 Seata 服务(推荐):
    • 服务主项目:jeesite-cloud-module-seata : http://127.0.0.1:8091
    • 客户端项目(提供其它模块调用):jeesite-cloud-module-seata-client
  • 分布式事务 LCN 服务:
    • 服务主项目:jeesite-cloud-module-txlcn : http://127.0.0.1:7970
    • 客户端项目(提供其它模块调用):jeesite-cloud-module-txlcn-client
  • 熔断限流:jeesite-cloud-sentinel : http://127.0.0.1:9311
  • 链路追踪:jeesite-cloud-zipkin : http://127.0.0.1:9411
  • 解释:主项目为服务提供者、客户端项目为服务消费者

快速运行

初始化数据库

JeeSite Cloud 版本的数据库与 JeeSite 单机版数据库相同,你可以 下载最新的mysql脚本 或者使用 init-data.bat(sh) 命令完成初始化(支持多种数据库)。

安装 Redis

Redis 是一个缓存数据库,主要用来集中式管理共享会话和系统缓存的,如果你已安装 Redis,可以忽略这个步骤。

由于 Windows 版本的 Redis 安装不太方便,所以我们提供了该版本的安装文件和安装脚本。

下载地址:https://gitee.com/thinkgem/jeesite4-cloud/attach_files 找到 Redis-x64-4.0.2.2.zip 下载文件。

解压 Redis-x64-4.0.2.2.zip 压缩包,运行 service-install.bat 安装 Windows 系统服务。

默认地址:127.0.0.1;默认端口:6379;默认密码:1234,可根据自己需要修改 conf 文件。

启动 Nacos 服务

Nacos 致力于帮助您发现、配置和管理微服务。 Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

如果使用 Nacos 就不用部署 jeesite-cloud-eurekajeesite-cloud-config 了。

JeeSite Cloud 提供了 2 种部署方式,你可以下载 jar 也可以 src 方式运行:

jar 方式:

  1. 下载地址:https://github.com/alibaba/nacos/releases/download/2.0.3/nacos-server-2.0.3.zip
  2. 解压 nacos-server-2.0.3.zip 压缩包,运行 /bin/startup.cmd(sh) 启动服务。

src 方式:

  1. 在 Eclipse 或 IDEA 中 找到 jeesite-cloud-nacos 项目。
  2. 运行 NacosApplication 类的 main 方法,即可启动服务。

配置 mysql 存储:

  1. 默认情况 Nacos 采用 Derby 数据库,你可以将数据库切换到 MySQL 下。
  2. 找到 /nacos/src/main/resources/config/nacos-mysql.sql 文件导入数据表。
  3. 找到 Nacos 的配置文件(application.properties 或 application.yml)如下:
spring.datasource.platform: mysql

### Count of DB:
db.num: 1

### Connect URL of DB:
db.url.0: jdbc:mysql://127.0.0.1:3306/nacos?useSSL=false&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=UTC
db.user: root
db.password: 123456

# 如果是 application.properties 文件,将 key 后的冒号换为等号即可。

启动完成后:

浏览器访问:http://127.0.0.1:8848/nacos/index.html 用户名密码:nacos

登录后,进入菜单 配置管理 -> 配置列表 点击 导入配置 按钮,选择 /config/src/main/resources/jeesite-cloud-43.zip 上传文件。

然后编辑 Data Id 为 application.yml 的文件里的 JDBC 和 Redis 信息。

启动 Sentinel 服务

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。 Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点, 从流量控制、熔断降级、系统自适应保护等多个维度来帮助您保障微服务的稳定性。

  1. 在 Eclipse 或 IDEA 中 找到 jeesite-cloud-sentinel 项目。
  2. 运行 SentinelApplication 类的 main 方法,即可启动服务。

浏览器访问:http://127.0.0.1:9311 用户名密码:sentinel

启动 Zipkin 服务

Zipkin 是一个开放源代码分布式的跟踪系统,每个服务向 Zipkin 报告计时数据,Zipkin会根据调用关系通过 Zipkin UI 生成依赖关系图。

  1. 在 Eclipse 或 IDEA 中 找到 jeesite-cloud-zipkin 项目。
  2. 运行 ZipkinApplication 类的 main 方法,即可启动服务。

浏览器访问:http://127.0.0.1:9411

启动微服务项目

  • 在每个微服务中可以找的 config/bootstrap.yml 配置服务注册和配置中心地址。
  • 按顺序运行以下启动类的main方法:(因为服务直接有依赖,请启动完成一个再启下一个)
    • /jeesite-cloud-gateway/../GatewayApplication.java
    • /jeesite-cloud-module-core/../CoreApplication.java
    • /jeesite-cloud-module-test1/../Test1Application.java
    • /jeesite-cloud-module-test2/../Test2Application.java
  • 以上都启动成功后,浏览器访问网关项目地址即可:
    • 访问地址:http://127.0.0.1:8980/js 用户名密码: system admin
    • 若访问报错,请再等待一会,可能服务未完全启动完成

调用实例演示

网关代理模块调用

模块之间互相调用

  • test2 模块调用 test1 模块(单表):http://127.0.0.1:8980/js/a/test2/testData/list
    • 服务消费者位置:/jeesite-cloud-module-test2/../web/TestData2Controller.java
    • 服务提供者位置:/jeesite-cloud-module-test1/../service/TestDataService.java
  • test1 模块调用 test2 模块(树表):http://127.0.0.1:8980/js/a/test1/testTree/list
    • 服务消费者位置:/jeesite-cloud-module-test1/../web/TestTree1Controller.java
    • 服务提供者位置:/jeesite-cloud-module-test2/../service/TestTreeService.java

新增微服务工程

1、新建模块

1)进入菜单:系统管理 -> 系统设置 -> 模块管理,新建一个模块,填写:

  • 模块名称:测试模块
  • 模块编码:test3
  • 生成基础路径:填写新建模块的根目录
  • 代码生成模板:生成微服务模块代码(Cloud)

点击 “保存并生成代码” 按钮,即可完成微服务模块的工程代码新建。

2)新建微服务功能,进入代码生成器功能菜单,生成时选择 Cloud 的代码生成模板即可。

v4.2.2之前版本:

由于之前版本没有微服务模块生成器功能,所以需要参考其它模块。举例新增一个微服务模块模块叫 test3,该模块的所有映射地址均在 ${adminPath}/test3/** 这个路径下,该模块可以参照 test1 进行,步骤如下:

拷贝 jeesite-cloud-module-test1 项目为 jeesite-cloud-module-test3 文件夹:

1)修改 pom.xml 中的应用名:

<artifactId>jeesite-cloud-module-test1</artifactId>
替换为:
<artifactId>jeesite-cloud-module-test3</artifactId>
<artifactId>jeesite-cloud-module-test1-client</artifactId>
替换为:
<artifactId>jeesite-cloud-module-test3-client</artifactId>

2)修改 application.yml 中的应用名:

spring:
  application:
    name: jeesite-cloud-module-test3

3)修改 *Client.java 里的应用名:

service.test1 替换为 service.test3

4)修改 *Controller.java 里的映射路径:

${adminPath}/test1 替换为 ${adminPath}/test3

2、配置服务参数

在 jeesite-config 或 Nacos 的微服务配置文件 application.yml 中,新增微服务:

# 微服务列表
service:
  test3:
    name: jeesite-cloud-module-test3
    path: ${server.servlet.context-path}

3、配置网关映射

在 jeesite-cloud-gateway 配置文件中新增网关路由

spring:
  cloud:
    gateway:
      routes:
        # 测试模块3
        - id: test3
          uri: lb://jeesite-cloud-module-test3
          predicates:
            - Path=/js/a/test3/**,/js/a/jeesite-cloud-module-test3/**,/js/static/modules/test3/**

注意:新增的配置请放到 core 基础权限模块之上。

微服务增删改查

进入 “代码生成器” 菜单,同单机版使用方法,只需在生成代码时,选择 Cloud 版本的生成模板即可。

授权协议声明

  1. 基于 Apache License Version 2.0 协议发布,但必须遵守以下补充条款。
  2. 不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
  3. 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议、版权声明和其他原作者 规定需要包含的说明(请尊重原作者的著作权,不要删除或修改文件中的Copyright@author信息) 更不要,全局替换源代码中的 jeesite 或 ThinkGem 等字样,否则你将违反本协议条款承担责任。
  4. 您若套用本软件的一些代码或功能参考,请保留源文件中的版权和作者,需要在您的软件介绍明显位置 说明出处,举例:本软件基于 JeeSite 快速开发平台,并附带链接:http://jeesite.com
  5. 任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
  6. 如果你对本软件有改进,希望可以贡献给我们,共同进步。
  7. 本项目已申请软件著作权,请尊重开源,感谢阅读。
  8. 本项目仅用于学习和交流,不能用到正式环境。

获得技术服务支持:http://s.jeesite.com

  • 我们深知,没有资金的支撑就很难得到发展,特别是一个好的产品,如果 JeeSite 帮助了您,请为我们点赞。支持我们,您可以得到一些回报,有了这些我们会把开源事业做的更好,回报社区和社会,请给我们一些动力吧,在此非常感谢已支持我们的朋友!

技术交流方式

JeeSite4微信公众号

Git 全局设置技巧

1、提交检出均不转换换行符

git config --global core.autocrlf false

2、拒绝提交包含混合换行符的文件

git config --global core.safecrlf true
Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright (C) 2013-Now, http://jeesite.com (thinkgem@163.com). Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ============================================================================ 授权许可补充协议条款: 1. 基于 Apache License Version 2.0 协议发布,但必须遵守以下补充条款。 2. 不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。 3. 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议、版权声明和其他原作者 规定需要包含的说明(请尊重原作者的著作权,不要删除或修改文件中的`Copyright`和`@author`信息) 更不要,全局替换源代码中的 jeesite 或 ThinkGem 等字样,否则你将违反本协议条款承担责任。 4. 您若套用本软件的一些代码或功能参考,请保留源文件中的版权和作者,需要在您的软件介绍明显位置 说明出处,举例:本软件基于 JeeSite 快速开发平台,并附带链接:http://jeesite.com 5. 任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。 6. 如果你对本软件有改进,希望可以贡献给我们,共同进步。 7. 本项目已申请软件著作权,请尊重开源,感谢阅读。 8. 本项目仅用于学习和交流,不能用到正式环境。 版权所有:济南卓源软件有限公司 官方网址:http://jeesite.com 联系我们:http://s.jeesite.com

简介

ThinkGem 出品必属精品 JeeSite Spring Cloud 是基于 Spring Cloud 的一个分布式系统套件的整合。特点:用经典开发模式,开发分布式应用,两个字【简单】,一个字【快】。具备 JeeSite4 单机版的所有功能,统一身份认证,统一基础数据管理,弱化微服务开发难度。。集成阿里优秀组件 Nacos 服务治理与配置中心、集成 Sentinel 流量卫兵;集成 Zipkin 链路追踪;集成 TxLcn、Seata 分布式事务等 展开 收起
Java
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/erongtop/jeesite4-cloud.git
git@gitee.com:erongtop/jeesite4-cloud.git
erongtop
jeesite4-cloud
JeeSite Spring Cloud
v4.4_dev

搜索帮助

14c37bed 8189591 565d56ea 8189591