api-boot

Project Url: hengboy/api-boot
Introduction: ApiBoot 是一款基础的接口服务框架,集成第三方框架的首选落地方案,开箱即用,对于接口服务的开发者而言可以提高超 10 倍开发效率
More: Author   ReportBugs   OfficialWebsite   
Tags:
Add Tag-

Maven Center Apache License JDK Version SpringBoot Version

ApiBoot是一款基于SpringBoot1.xSpringBoot2.x的接口服务集成基础框架,内部提供了框架的封装集成,让接口开发者完成开箱即用,不再为搭建接口框架而犯愁,从而极大的提高开发效率。 通过在我的SpringBoot系列教程中得到的学习者的反馈,才决定来封装一套对应我文章的基础框架,ApiBoot内的每一个框架的具体讲解都在文章内进行了详细说明,如果有不明白的可以通过如下途径访问我的文章:

  • 服务资源安全 :通过整合SpringSecurity + Oauth2来完成接口服务的安全性,安全拦截路径内的请求必须携带请求令牌才可以访问到资源内容,资源内容可配置指定身份、权限访问。
  • 服务授权认证中心:服务授权以及认证是由Oauth2来担任,通过password授权模式获取请求令牌后访问资源服务,一个配置即可开启Jwt格式化AccessToken
  • 文档自动生成:通过集成Swagger2来完成文档的侵入式生成,侵入式文档后期会被替代,ApiBoot Security Oauth已默认排除swagger2相关的资源路径。
  • 返回 JSON 格式化:使用阿里巴巴的FastJson来完成返回Json字符串的格式化,自动扫描装载自定义的ValueFilter实现类,用于自定义返回格式化。
  • 数据库 ORM 框架mybatis-enhance是一款由我开源的数据库持久化框架,基于mybatis进行封装编写,可以完成动态查询数据,语法与SQL语法几乎一致,内置常用方法提供直接调用,支持方法命名规则查询,一个接口方法就可以自动完成查询,不再编写SQL语句。
  • 动态数据源:完成项目的多数据源配置、内部集成druidHikariCP数据源实现方式,配置主从数据源、多数据库类型数据源、多种数据源实现方式集成。
  • 自动分页插件mybatis-pageable是一款由我开源的自动化分页插件,直接摆脱编写分页代码,仅仅需要传递的分页参数就可以自动进行查询,目前支持主流的12种数据库。
  • 资源业务自动分离resource-load用于业务与资源信息的分页,比如:用户头像、封面图等,只需要关心业务,让resource-load自动去维护资源信息。
  • 接口限流rate-limiter用于接口服务的请求流量限制,可以根据 QPS 配置每秒允许访问的次数。
  • 代码生成插件code-builder是一款由我开源的代码生成插件,直接摆脱实体类的生成,支持自定义freemarker模板来完成自定义生成类文件,比如:ServiceControllerMapper等。
  • 七牛云资源处理:集成七牛云提供的 SDK 来完成文件的上传、下载等方法实现,开箱即用。
  • 阿里云 OSS 资源处理:集成阿里云 OSS 提供的 SDK 来完成文件的上传、下载等方法实现,开箱即用。
  • 阿里云短信:集成阿里云提供的 SMS 服务,简单配置即可完成短信发送,覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。

更多功能请参考 更多功能列表

组件

  • Spring Security:Spring 提供的安全框架,Spring 家族式的设计,无缝整合 SpringBoot
  • OAuth2:OAuth 是一个网络授权的标准。
  • JWT:JSON Web Token 是目前流行的跨域认证解决方案,用于格式化 OAuth2 生成的 Token。
  • Quartz:分布式定时任务调度框架
  • Swagger2:Swagger 是一款 API 文档生成工具,自动扫描代码进行生成可运行测试的文档。
  • Mybatis EnhanceEnhance是对于原生的MyBatis的增强编写,不影响任何原生的使用,使用后完全替代mybatis-coremybatis-spring以及mybatis-spring-boot-starter,可以使用SpringBoot配置文件的形式进行配置相关的内容,尽可能强大的方便快速的集成MyBatis
  • DataSource Switch:一款多数据源自动切换框架,可配置多种数据库类型数据源集成、主从数据源配置。
  • Mybatis PageableMyBatis-Pageable是一款自动化分页的插件,基于MyBatis内部的插件Interceptor拦截器编写完成,拦截Executor.query的两个重载方法计算出分页的信息以及根据配置的数据库Dialect自动执行不同的查询语句完成总数量的统计。
  • Code Buildercode-builder是一款代码生成maven mojo插件,通过简单的配置就可以完成数据库内Table转换Entity或者其他实体类,想怎么生成完全根据你的个人业务逻辑,code-builder尽可能的完善的提供数据库内的一些定义的信息,让你更方便更灵活的来生成Java文件。
  • Resource Load:通过 AOP 实现的资源自动加载、更新、删除、添加,内部还提供了内存、Redis 缓存方式,极大的减轻数据库资源查询的压力。
  • Rate Limiter:通过拦截器实现的服务接口流量限制,可以配置某一个接口每秒内的访问次数(QPS),通过集成Google的令牌桶限流方式完成。

更多组件请参考更多集成组件

Stargazers over time

Stargazers over time

怎么使用?

添加版本依赖

在使用ApiBoot时需要再pom.xml文件内的dependencyManagement标签内添加如下配置:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.minbox.framework</groupId>
      <artifactId>api-boot-dependencies</artifactId>
      <version>2.0.7.RELEASE</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

由于ApiBoot内后期规划集成的内容比较多,所以根据了SpringBoot的版本规划来进行了管理维护,这样在添加使用ApiBoot的依赖时就不再需要添加版本号,统一交由api-boot-dependencies进行管理。

注意:该版本默认添加了spring-boot-dependencies依赖。

使用 Demo

ApiBoot会为每一个依赖提供一个演示代码集成子项目,都在api-boot-samples项目下,为了更好地解释ApiBoot的每一个依赖功能,恒宇少年会在每一个sample下添加当前项目的readme进行详细介绍。

Demo 列表:

更新日志

ApiBoot每一次发版都会有相应的更新日志,点击访问更新日志 wiki

版本管理规范

项目的版本号格式为 x.x.x 的形式,其中 x 的数值类型为数字,从 0 开始取值,且不限于 0~9 这个范围。

  • SpringBoot1.x 版本对应 ApiBoot 版本 1.x.x
  • SpringBoot2.x 版本对应 ApiBoot 版本 2.x.x

集成新的第三方框架为小版本更新,对应修改第三位版本数值,如:2.0.1 -> 2.0.2

开源交流

社区交流

恒宇少年邮件

jnyuqy@gmail.com

恒宇少年微信

yuqiyu999

ApiBoot 开源群组

项目结构

. api-boot
├── api-boot-projects
│   ├── api-boot-autoconfigure
│   ├── api-boot-common
│   ├── api-boot-dependencies
│   ├── api-boot-parent
│   └── api-boot-starters
├── api-boot-samples
│   ├── api-boot-sample-alibaba-oss
│   ├── api-boot-sample-alibaba-sms
│   ├── api-boot-sample-http-converter
│   ├── api-boot-sample-datasource-switch
│   ├── api-boot-sample-security-oauth-jwt
│   ├── api-boot-sample-resource-load
│   ├── api-boot-sample-rate-limiter
│   ├── api-boot-sample-mybatis-enhance
│   ├── api-boot-sample-mybatis-pageable
│   ├── api-boot-sample-quartz    
│   └── api-boot-sample-swagger
└── tools

开源许可

ApiBoot采用Apache2开源许可。

Support Me
Apps
About Me
Google+: Trinea trinea
GitHub: Trinea