ApiBoot:《SpringBoot》整合组件接口服务框架落地解决方案
ApiBoot
ApiBoot
是一款基于SpringBoot2.x
的接口服务集成基础框架,内部提供了框架的封装集成,让接口开发者完成开箱即用,不再为搭建接口框架而犯愁,从而极大的提高开发效率。
通过在我的SpringBoot
系列教程中得到的学习者的反馈,才决定来封装一套对应我文章的基础框架,ApiBoot
内的每一个框架的具体讲解都在文章内进行了详细说明,如果有不明白的可以通过如下途径访问我的文章:
主要功能
-
服务资源安全 :通过整合
SpringSecurity
+Oauth2
来完成接口服务的安全性,安全拦截路径内的请求必须携带请求令牌
才可以访问到资源内容,资源内容可配置指定身份、权限访问。 -
服务授权认证中心:服务授权以及认证是由
Oauth2
来担任,通过password
授权模式获取请求令牌
后访问资源服务,一个配置即可开启Jwt
格式化AccessToken
-
文档自动生成:通过集成
Swagger2
来完成文档的侵入式生成,侵入式文档后期会被替代,ApiBoot Security Oauth
已默认排除swagger2
相关的资源路径。 -
返回JSON格式化:使用阿里巴巴的
FastJson
来完成返回Json
字符串的格式化,自动扫描装载自定义的ValueFilter
实现类,用于自定义返回格式化。 -
数据库ORM框架:
mybatis-enhance
是一款由我开源的数据库持久化框架,基于mybatis
进行封装编写,可以完成动态查询数据,语法与SQL
语法几乎一致,内置常用方法提供直接调用,支持方法命名规则查询,一个接口方法就可以自动完成查询,不再编写SQL
语句。 -
自动分页插件:
mybatis-pageable
是一款由我开源的自动化分页插件,直接摆脱编写分页代码
,仅仅需要传递的分页参数就可以自动进行查询,目前支持主流的12种数据库。 -
代码生成插件:
code-builder
是一款由我开源的代码生成插件,直接摆脱实体类的生成,支持自定义freemarker
模板来完成自定义生成类文件,比如:Service
、Controller
、Mapper
等。 - 七牛云资源处理:集成七牛云提供的SDK来完成文件的上传、下载等方法实现,开箱即用。
- 阿里云OSS资源处理:集成阿里云OSS提供的SDK来完成文件的上传、下载等方法实现,开箱即用。
- 阿里云短信:集成阿里云提供的SMS服务,简单配置即可完成短信发送,覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。
更多功能请参考 更多功能列表
组件
- Spring Security:Spring提供的安全框架,Spring家族式的设计,无缝整合SpringBoot
- OAuth2:OAuth是一个网络授权的标准。
- JWT:JSON Web Token是目前流行的跨域认证解决方案,用于格式化OAuth2生成的Token。
- Swagger2:Swagger是一款API文档生成工具,自动扫描代码进行生成可运行测试的文档。
-
Mybatis Enhance:
Enhance
是对于原生的MyBatis
的增强编写,不影响任何原生的使用,使用后完全替代mybatis-core
、mybatis-spring
以及mybatis-spring-boot-starter
,可以使用SpringBoot
配置文件的形式进行配置相关的内容,尽可能强大的方便快速的集成MyBatis
。 -
Mybatis Pageable:
MyBatis-Pageable
是一款自动化分页的插件,基于MyBatis
内部的插件Interceptor
拦截器编写完成,拦截Executor.query
的两个重载方法计算出分页的信息以及根据配置的数据库Dialect
自动执行不同的查询语句完成总数量的统计。 -
Code Builder:
code-builder
是一款代码生成maven mojo
插件,通过简单的配置就可以完成数据库内Table
转换Entity
或者其他实体类,想怎么生成完全根据你的个人业务逻辑,code-builder
尽可能的完善的提供数据库内的一些定义的信息,让你更方便更灵活的来生成Java
文件。
更多组件请参考更多集成组件
怎么使用?
添加版本依赖
在使用ApiBoot
时需要再pom.xml
文件内的dependencyManagement
标签内添加如下配置:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.minbox.framework</groupId>
<artifactId>api-boot-dependencies</artifactId>
<version>1.0.1.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 Security Oauth
- ApiBoot Swagger
- ApiBoot Http Converter
- ApiBoot Alibaba OSS
- ApiBoot Alibaba SMS
版本管理规范
项目的版本号格式为 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
项目结构
. 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-security-oauth-jwt
│ └── api-boot-sample-swagger
└── tools
ApiBoot
集成框架相关的代码实现都在org.minbox.framework.api.boot.framework
目录下,如果你需要编写自己的业务尽可能的在framework
的同级目录创建package
来进行编写,ApiBoot
默认扫描org.minbox.framework.api.boot
目录下的所有类。
开源许可
ApiBoot
采用Apache2
开源许可。
- 不用临时变量,交换二个整型变量的值
- monoTouch开发(1):win7 + vmware下安装mac os
- 数据结构C#版笔记--队列(Quene)
- 数据结构C#版笔记--堆栈(Stack)
- MySQL基础入门-第一课 新建数据库(linux版本)
- 2017年度最不安全密码报告,看看你的密码安全吗?
- 数据结构C#版笔记--顺序表(SeqList)
- 数据结构C#版笔记--单链表(LinkList)
- 操作系统 页式存储 页与块之间的关系详解
- 数据结构C#版笔记--双向链表(DbLinkList)
- 斐波那契数列与IE9
- DateTime.ToString()输出"年/月/日 时:分:秒"的格式
- Flash在线拍摄用户头象
- win7 64位下如何折腾Tubro C 3.0
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释