Git Product home page Git Product logo

7040210 / superboot Goto Github PK

View Code? Open in Web Editor NEW
358.0 38.0 128.0 26.96 MB

随着技术日新月异,新技术新平台不断出现,对现如今的开发人员来说选择快速高效的框架进行项目开发,既能提高产出,又能节约时间。本框架无需开发即可实现服务注册、服务发现、负载均衡、服务网关、配置中心、API管理、分布式事务、支撑平台、集成框架、数据传输加密等功能,是学习SpringCloud整体业务模式的完整示例,并且可以直接用于生产环境

License: MIT License

Java 99.76% Dockerfile 0.24%
springboot springcloud redis druid mysql java swagger mongodb eureka zuul

superboot's Introduction

项目介绍

Build StatusLicenseGitHub stars GitHub forks Average time to resolve an issue Percentage of issues still open

SuperBoot框架是基于SpringCloud、SpringBoot敏捷开发框架,框架开发初衷是为了方便快速开发项目,无需关心基础代码的编写,可以更专注于业务本身。框架实现基于JWT Token授权验证,实现单点登录SSO,服务鉴权,实现Redis数据缓存,在保证数据一致性的前提下提高接口响应速度。无缝集成MongoDB数据库,提供对非结构型数据存储,解决关系型数据库瓶颈问题。集成swagger框架,实现自动API测试及调试功能,解决程序员最反感的编写技术文档的问题。数据源基于Druid,提供更高性能及SQL监控。框架提供统一异常处理,统一响应结果,增加对JPA、Mongo的AOP拦截,由Snowflake ID自动生成赋值主键,数据实体无需开发均可由Idea自动生成。增删改查默认基于方法名称即可实现,无需写具体SQL。查询支持JPA、QueryDSL、Mybatis等方式。支持数据库读写分离,Feign增加服务直接的安全调用。v01版本是基础学习,主分支基于目前线上功能拆出来的功能模块,实现开箱即用。

项目结构

super-boot
├── client-config  		-- 项目配置文件信息,业务模块通过配置中心读取自动配置服务
├── project_info  		--  项目相关信息包含数据字典、SQL语句、工具等
├── super-boot-utils    	--  项目公用工具模块
├── super-boot-base     	--  项目公用常量模块
├── super-boot-global   	--  项目公用全局模块
├── super-boot-registry     --  注册中心
├── super-boot-config       --  配置中心
├── super-boot-gateway      --  网关中心
├── super-boot-user         --  用户中心

数据流程图


客户端->>  网关:提交请求
网关->> 验证身份:身份验证
验证身份-->>客户端:验证未通过
验证身份->>Redis:写入用户信息
网关->> 业务处理:提交业务请求数据
Redis-->>业务处理:获取用户信息
业务处理->>客户端:返回结果数据



网关->>注册中心:注册服务
微服务->>注册中心:注册服务
配置中心->>注册中心:注册服务
配置中心->>网关:获取配置
配置中心->>微服务:获取配置

客户端->>网关:提交请求
Note right of 网关: 验证用户身份、生成用户Redis信息
网关->>微服务:获取用户信息
微服务->>网关:返回用户信息
网关->>客户端:返回结果数据

项目依赖

此分布式项目要求配置人员有相关的从业经验,在启用之前要安装好MongoDB,Zookeeper、Kafka、Mysql、Redis等环境,然后修改项目内的具体配置信息。最后导入db.sql文件到数据库即可。

相关账号密码

注册中心及配置中心:

账号:admin

密码:superboot.org

MYSQL:

用户:root

密码:root

系统管理员:

账号:admin

密码:123456

组织管理员:

账号:group

密码:123456

项目启动顺序

1、启动注册中心(super-boot-registry)
2、启动配置中心(super-boot-config)
3、启动网关中心(super-boot-gateway)
4、启动业务模块(无先后顺序,项目内包含user为用户中心)

模块介绍

super-boot-utils

此模块项目共用工具类及通用方法常量等信息,项目打包的时候会打包为jar包放入项目lib中。

super-boot-base

此模块项目公用常量信息,项目打包的时候会打包为jar包放入项目lib中。

super-boot-global

此模块项目公共服务,提供读写分离、缓存、鉴权、多语等一系列功能,项目打包的时候会打包为jar包放入项目lib中。

super-boot-registry

此模块为注册中心,提供所有服务模块的注册、容错、负载均衡等功能。分布式环境中需要配置为高可用集群模式,要保证注册中心的稳定。
启动后可以访问 http://localhost:10000

super-boot-config

此模块为配置中心,在分布式环境中需要配置为高可用集群模式,增加安全及稳定性。
启动后可以访问 http://localhost:11000/config-info.yml

super-boot-gateway

此模块为API网关中心,提供统一的API调用接口及相关配置功能,支持限流、权限认证等功能。
启动后可以访问 http://localhost:9080/swagger-ui.html

super-boot-user

此模块为用户中心,提供用户注册、密码修改等相关功能。
启动后可以访问 http://localhost:8090/swagger-ui.html

Idea逆向生成数据库实体类

第一步配置 数据库

第一步配置 数据库

第二步配置 数据库连接信

第二步配置 数据库连接信息

第三步 配置hibernate,如果没有cfg.xml文件,点击ok后会自动生成

第三步  配置hibernate,如果没有cfg.xml文件,点击ok后会自动生成

第四步 选择hibernate配置文件生成实体

第四步 选择hibernate配置文件生成实体

第五步 设置完点击,选中要生成的实体的表

第五步 设置完点击,选中要生成的实体的表

项目API接口自动添加到数据库示例代码

生成效果图

注解类型

使用方式为在启动类添加如下代码即可

	
     @Autowired
    private Pub_DBUtils pub_DBUtils;

    /**
     * 扫描URL,如果数据库中不存在,则保存入数据库
     */
    //这个注解很重要,可以在每次启动的时候检查是否有URL更新,RequestMappingHandlerMapping只能在controller层用。这里我们放在主类中
    @PostConstruct
    public void detectHandlerMethods() {
        pub_DBUtils.addApiToDB();
    }

项目启用校验国际化功能

1、RESTful增加 @Validated 注解

2、实体类增加需要校验的注解类型即可

主要用到的注解类型

注解类型

Spring Data JPA 为此提供了一些表达条件查询的关键字,大致如下:

And --- 等价于 SQL 中的 and 关键字,比如 findByUsernameAndPassword(String user, Striang pwd)

Or --- 等价于 SQL 中的 or 关键字,比如 findByUsernameOrAddress(String user, String addr)

Between --- 等价于 SQL 中的 between 关键字,比如 findBySalaryBetween(int max, int min)

LessThan --- 等价于 SQL 中的 "<",比如 findBySalaryLessThan(int max)

GreaterThan --- 等价于 SQL 中的">",比如 findBySalaryGreaterThan(int min)

IsNull --- 等价于 SQL 中的 "is null",比如 findByUsernameIsNull()

IsNotNull --- 等价于 SQL 中的 "is not null",比如 findByUsernameIsNotNull()

NotNull --- 与 IsNotNull 等价

Like --- 等价于 SQL 中的 "like",比如 findByUsernameLike(String user)

NotLike --- 等价于 SQL 中的 "not like",比如 findByUsernameNotLike(String user)

OrderBy ---等价于 SQL 中的 "order by",比如 findByUsernameOrderBySalaryAsc(String user)

Not --- 等价于 SQL 中的 "! =",比如 findByUsernameNot(String user)

In --- 等价于 SQL 中的 "in",比如 findByUsernameIn(Collection userList) ,方法的参数可以是 Collection 类型,也可以是数组或者不定长参数

NotIn --- 等价于 SQL 中的 "not in",比如 findByUsernameNotIn(Collection userList) ,方法的参数可以是 Collection 类型,也可以是数组或者不定长参数

其他QueryDSL、系统安全、读写分离请参考project-info下具体文档

请作者喝杯咖啡吧

请作者喝咖啡

superboot's People

Contributors

7040210 avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

superboot's Issues

redis问题

你好,在启动注册中心过程中提示:org.springframework.data.redis.ClusterStateFailureException: Could not retrieve cluster information. CLUSTER NODES returned with error.
但是我们没有找到哪里有相关的配置redis的地方,是怎么回事呢,还有就是工程中好像还使用了mongoDBd,但是也是没有找到相关的配置,只看到了依赖。

启动gateaway失败

多处提示:
nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'Snowflake.workerId' in value "${Snowflake.workerId};

升级问题

1.你好你的框架真的很棒,我已经通过走读代码跑起来不报错了,想问一下,后期还会继续完善吗?

数据字典设计规范

1、 数据字典创建的时候必须包含TS(时间戳)、DR(删除标识)字段,数据删除为了提供历史追溯功能,数据采取逻辑删除非物理删除,即将数据的DR标识改为1则标识为删除状态。

2、 数据库主键采用BigInt类型,在IDEA生成实体类的时候,会自动增加@id注解,在数据进行保存的时候,框架AOP会自动拦截save方法,利用反射对主键字段赋值。

3、 数据存储使用分表分库模式,项目启用多数据源,base数据源存储公共部分,业务数据库统一使用ext数据源,各项目生成实体类均放在项目下的ext中,repository的数据库操作DAO也需要放在ext中,操作base库的均放在super-boot-dao公共模块中。

API接口命名规范

使用实体(Entity)和聚合(Aggregate)来描述业务对象,还定义了服务(Service)、值对象(Value Object)和仓库(Repository)】用以解决业务领域或 DDD 边界上下文问题。比如对于银行账号开说,账户就是一个以 【领域对象】以及这些对象所提供的 【业务操作为中心】。接口URL可以定义规则如下:

POST /account ——新开一个账户。

PUT /account/{accountId}/Invalid ——注销一个已有的账户。

PUT /account/{accountId}/reduce ——从账户里扣掉一些钱。

PUT /account/{accountId}/increase ——往账户里存入一些钱。

GET /account/{accountId} ——通过账户 ID 加载相应的账户信息。

GET /account/{accountId}/transactions ——列出账户的交易历史。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.