{"id":15068768,"url":"https://github.com/7040210/superboot","last_synced_at":"2025-04-04T22:09:25.268Z","repository":{"id":25183101,"uuid":"103383269","full_name":"7040210/SuperBoot","owner":"7040210","description":"随着技术日新月异，新技术新平台不断出现，对现如今的开发人员来说选择快速高效的框架进行项目开发，既能提高产出，又能节约时间。本框架无需开发即可实现服务注册、服务发现、负载均衡、服务网关、配置中心、API管理、分布式事务、支撑平台、集成框架、数据传输加密等功能，是学习SpringCloud整体业务模式的完整示例，并且可以直接用于生产环境","archived":false,"fork":false,"pushed_at":"2024-08-26T16:07:00.000Z","size":27613,"stargazers_count":359,"open_issues_count":6,"forks_count":125,"subscribers_count":38,"default_branch":"master","last_synced_at":"2025-04-04T22:09:19.894Z","etag":null,"topics":["boot","druid","eureka","feign","hibernate","hystrix","jar-lib","java","java8","javaee","mongodb","mysql","redis","springboot","springcloud","sql","swagger","zuul"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/7040210.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-13T09:55:32.000Z","updated_at":"2025-02-04T13:47:59.000Z","dependencies_parsed_at":"2024-10-29T19:26:05.914Z","dependency_job_id":null,"html_url":"https://github.com/7040210/SuperBoot","commit_stats":{"total_commits":108,"total_committers":5,"mean_commits":21.6,"dds":"0.33333333333333337","last_synced_commit":"91ee57cc736937e8fbddd24cb5cf50102eb70345"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/7040210%2FSuperBoot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/7040210%2FSuperBoot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/7040210%2FSuperBoot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/7040210%2FSuperBoot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/7040210","download_url":"https://codeload.github.com/7040210/SuperBoot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247256115,"owners_count":20909240,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["boot","druid","eureka","feign","hibernate","hystrix","jar-lib","java","java8","javaee","mongodb","mysql","redis","springboot","springcloud","sql","swagger","zuul"],"created_at":"2024-09-25T01:39:11.947Z","updated_at":"2025-04-04T22:09:25.247Z","avatar_url":"https://github.com/7040210.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 项目介绍\n\n[![Build Status](assets/passing.svg)](https://travis-ci.org/7040210/SuperBoot)[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)[![GitHub stars](https://img.shields.io/github/stars/7040210/SuperBoot.svg?style=social\u0026label=Stars)](https://github.com/7040210/SuperBoot) [![GitHub forks](https://img.shields.io/github/forks/7040210/SuperBoot.svg?style=social\u0026label=Fork)](https://github.com/7040210/SuperBoot) \n[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/7040210/SuperBoot.svg)](http://isitmaintained.com/project/7040210/SuperBoot \"Average time to resolve an issue\")\n[![Percentage of issues still open](http://isitmaintained.com/badge/open/7040210/SuperBoot.svg)](http://isitmaintained.com/project/7040210/SuperBoot \"Percentage of issues still open\")\n\nSuperBoot框架是基于SpringCloud、SpringBoot敏捷开发框架，框架开发初衷是为了方便快速开发项目，无需关心基础代码的编写，可以更专注于业务本身。框架实现基于JWT Token授权验证，实现单点登录SSO，服务鉴权，实现Redis数据缓存，在保证数据一致性的前提下提高接口响应速度。无缝集成MongoDB数据库，提供对非结构型数据存储，解决关系型数据库瓶颈问题。集成swagger框架，实现自动API测试及调试功能，解决程序员最反感的编写技术文档的问题。数据源基于Druid，提供更高性能及SQL监控。框架提供统一异常处理，统一响应结果，增加对JPA、Mongo的AOP拦截，由Snowflake ID自动生成赋值主键，数据实体无需开发均可由Idea自动生成。增删改查默认基于方法名称即可实现，无需写具体SQL。查询支持JPA、QueryDSL、Mybatis等方式。支持数据库读写分离，Feign增加服务直接的安全调用。v01版本是基础学习，主分支基于目前线上功能拆出来的功能模块，实现开箱即用。\n\n\n\n## 项目结构\n\n``` lua\nsuper-boot\n├── client-config  \t\t-- 项目配置文件信息，业务模块通过配置中心读取自动配置服务\n├── project_info  \t\t--  项目相关信息包含数据字典、SQL语句、工具等\n├── super-boot-utils    \t--  项目公用工具模块\n├── super-boot-base     \t--  项目公用常量模块\n├── super-boot-global   \t--  项目公用全局模块\n├── super-boot-registry     --  注册中心\n├── super-boot-config       --  配置中心\n├── super-boot-gateway      --  网关中心\n├── super-boot-user         --  用户中心\n```\n## 数据流程图\n```sequence\n\n客户端-\u003e\u003e  网关:提交请求\n网关-\u003e\u003e 验证身份:身份验证\n验证身份--\u003e\u003e客户端:验证未通过\n验证身份-\u003e\u003eRedis:写入用户信息\n网关-\u003e\u003e 业务处理:提交业务请求数据\nRedis--\u003e\u003e业务处理:获取用户信息\n业务处理-\u003e\u003e客户端:返回结果数据\n\n```\n\n```sequence\n\n\n网关-\u003e\u003e注册中心:注册服务\n微服务-\u003e\u003e注册中心:注册服务\n配置中心-\u003e\u003e注册中心:注册服务\n配置中心-\u003e\u003e网关:获取配置\n配置中心-\u003e\u003e微服务:获取配置\n\n客户端-\u003e\u003e网关:提交请求\nNote right of 网关: 验证用户身份、生成用户Redis信息\n网关-\u003e\u003e微服务:获取用户信息\n微服务-\u003e\u003e网关:返回用户信息\n网关-\u003e\u003e客户端:返回结果数据\n\n```\n\n## 项目依赖\n\n\t此分布式项目要求配置人员有相关的从业经验，在启用之前要安装好MongoDB，Zookeeper、Kafka、Mysql、Redis等环境，然后修改项目内的具体配置信息。最后导入db.sql文件到数据库即可。\n\n## 相关账号密码\n\n注册中心及配置中心:\n\n\t账号:admin\n\t\n\t密码:superboot.org\n\nMYSQL:\n\n\t用户:root\n\t\n\t密码:root\n\n系统管理员:\n\n\t账号:admin\n\t\n\t密码:123456\n\n组织管理员:\n\n\t账号:group\n\t\n\t密码:123456\n\n## 项目启动顺序\n\n  1、启动注册中心（super-boot-registry）\n\u003cbr\u003e  2、启动配置中心（super-boot-config）\n\u003cbr\u003e  3、启动网关中心（super-boot-gateway）\n\u003cbr\u003e  4、启动业务模块（无先后顺序，项目内包含user为用户中心）\n\n## 模块介绍\n\n\u003e super-boot-utils\n\n此模块项目共用工具类及通用方法常量等信息，项目打包的时候会打包为jar包放入项目lib中。\n\n\n\u003e super-boot-base\n\n此模块项目公用常量信息，项目打包的时候会打包为jar包放入项目lib中。\n\n\n\u003e super-boot-global\n\n此模块项目公共服务，提供读写分离、缓存、鉴权、多语等一系列功能，项目打包的时候会打包为jar包放入项目lib中。\n\n\u003e super-boot-registry\n\n此模块为注册中心，提供所有服务模块的注册、容错、负载均衡等功能。分布式环境中需要配置为高可用集群模式，要保证注册中心的稳定。\n\u003cbr\u003e启动后可以访问 http://localhost:10000\n\n\u003e super-boot-config\n\n此模块为配置中心，在分布式环境中需要配置为高可用集群模式，增加安全及稳定性。\n\u003cbr\u003e启动后可以访问 http://localhost:11000/config-info.yml \n\n\u003e super-boot-gateway\n\n此模块为API网关中心，提供统一的API调用接口及相关配置功能，支持限流、权限认证等功能。\n\u003cbr\u003e启动后可以访问 http://localhost:9080/swagger-ui.html\n\n\u003e super-boot-user\n\n此模块为用户中心，提供用户注册、密码修改等相关功能。\n\u003cbr\u003e启动后可以访问 http://localhost:8090/swagger-ui.html\n\n\n## Idea逆向生成数据库实体类\n### 第一步配置 数据库\n![第一步配置 数据库](project_info/png/genentity/0.png)\n### 第二步配置 数据库连接信\n![第二步配置 数据库连接信息](project_info/png/genentity/1.png)\n### 第三步  配置hibernate，如果没有cfg.xml文件，点击ok后会自动生成\n![第三步  配置hibernate，如果没有cfg.xml文件，点击ok后会自动生成](project_info/png/genentity/2.png)\n### 第四步 选择hibernate配置文件生成实体\n![第四步 选择hibernate配置文件生成实体](project_info/png/genentity/3.png)\n### 第五步 设置完点击，选中要生成的实体的表\n![第五步 设置完点击，选中要生成的实体的表](project_info/png/genentity/4.png)\n\n\n## 项目API接口自动添加到数据库示例代码\n\n### 生成效果图\n![注解类型](project_info/png/api.png)\n\n### 使用方式为在启动类添加如下代码即可\n~~~~java\n\n\t\n     @Autowired\n    private Pub_DBUtils pub_DBUtils;\n\n    /**\n     * 扫描URL，如果数据库中不存在，则保存入数据库\n     */\n    //这个注解很重要，可以在每次启动的时候检查是否有URL更新，RequestMappingHandlerMapping只能在controller层用。这里我们放在主类中\n    @PostConstruct\n    public void detectHandlerMethods() {\n        pub_DBUtils.addApiToDB();\n    }\n\n~~~~\n\n## 项目启用校验国际化功能\n\n### 1、RESTful增加 @Validated 注解\n\n### 2、实体类增加需要校验的注解类型即可\n\n#### 主要用到的注解类型\n\n ![注解类型](project_info/png/validate.png)\n\n\n\n##  Spring Data JPA 为此提供了一些表达条件查询的关键字，大致如下：\n\n#### And --- 等价于 SQL 中的 and 关键字，比如 findByUsernameAndPassword(String user, Striang pwd)\n\n#### Or --- 等价于 SQL 中的 or 关键字，比如 findByUsernameOrAddress(String user, String addr)\n\n#### Between --- 等价于 SQL 中的 between 关键字，比如 findBySalaryBetween(int max, int min)\n\n#### LessThan --- 等价于 SQL 中的 \"\u003c\"，比如 findBySalaryLessThan(int max)\n\n#### GreaterThan --- 等价于 SQL 中的\"\u003e\"，比如 findBySalaryGreaterThan(int min)\n\n#### IsNull --- 等价于 SQL 中的 \"is null\"，比如 findByUsernameIsNull()\n\n#### IsNotNull --- 等价于 SQL 中的 \"is not null\"，比如 findByUsernameIsNotNull()\n\n#### NotNull --- 与 IsNotNull 等价\n\n#### Like --- 等价于 SQL 中的 \"like\"，比如 findByUsernameLike(String user)\n\n#### NotLike --- 等价于 SQL 中的 \"not like\"，比如 findByUsernameNotLike(String user)\n\n#### OrderBy ---等价于 SQL 中的 \"order by\"，比如 findByUsernameOrderBySalaryAsc(String user)\n\n#### Not --- 等价于 SQL 中的 \"！ =\"，比如 findByUsernameNot(String user)\n\n#### In --- 等价于 SQL 中的 \"in\"，比如 findByUsernameIn(Collection\u003cString\u003e userList) ，方法的参数可以是 Collection 类型，也可以是数组或者不定长参数\n\n#### NotIn --- 等价于 SQL 中的 \"not in\"，比如 findByUsernameNotIn(Collection\u003cString\u003e userList) ，方法的参数可以是 Collection 类型，也可以是数组或者不定长参数\n\n\n\n## 其他QueryDSL、系统安全、读写分离请参考project-info下具体文档\n\n\n\n## 请作者喝杯咖啡吧\n\n\n\n![请作者喝咖啡](project_info/png/wx.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F7040210%2Fsuperboot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F7040210%2Fsuperboot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F7040210%2Fsuperboot/lists"}