1.pom依赖

        <dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.2.2</version>
</dependency>

2.Swagger配置类

增加@EnableSwagger2和@Configuration注解

    import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2; /**
* ClassName:SwaggerConfig
* Date: 2017年12月5日 上午11:54:54
* @author xbq
* @version
* @since JDK 1.8
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig { @Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.rxwx.controller"))
.paths(PathSelectors.any())
.build();
} private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("springboot利用swagger构建api文档")
.description("简单优雅的restfun风格,http://www.cnblogs.com/xbq8080")
.termsOfServiceUrl("http://www.cnblogs.com/xbq8080")
.contact("小葱拌豆腐~")
.version("1.0")
.build();
}
}

  通过@Configuration注解,让Spring来加载该类配置,@EnableSwagger2注解来启用Swagger2。

  再通过createRestApi函数创建Docket的Bean之后,apiInfo()用来创建该Api的基本信息(这些基本信息会展现在文档页面中)。select()函数返回一个ApiSelectorBuilder实例用来控制哪些接口暴露给Swagger来展现,本例采用指定扫描的包路径来定义,Swagger会扫描该包下所有Controller定义的API,并产生文档内容(除了被@ApiIgnore注解的API)。

3.启动类加上注解

  @EnableSwagger2

  

4.在控制层 增加 注解

例如:

    /**
* 用户控制器
*/
@RestController
@RequestMapping(value = "/user")
@Api("用户信息相关api")
public class UserController { @Autowired
UserService userService; /**
* register:(注册).
* @param nickName
* @param password
* @param phone
* @return
*/
@ApiOperation(value="用户注册", notes="用户注册")
@ApiImplicitParams({
@ApiImplicitParam(paramType="query", name="nickName", dataType="String", required=true, value="用户的姓名"),
@ApiImplicitParam(paramType="query", name="password", dataType="String", required=true, value="用户的密码"),
@ApiImplicitParam(paramType="query", name="phone", dataType="String", required=true, value="用户的电话")
})
@RequestMapping(value = "/register", method = RequestMethod.GET)
public Object register( String nickName, String password, String phone) {
if(StringUtils.isEmpty(nickName)){
return Result.error("-100","nickName为空");
}
if(StringUtils.isEmpty(password)){
return Result.error("-100","password为空");
}
if(StringUtils.isEmpty(nickName)){
return Result.error("-100","phone为空");
}
User user = new User();
user.setNickName(nickName);
user.setPassword(MD5Util.generateMD5(password));
user.setPhone(phone);
try {
userService.insert(user);
} catch (Exception e) {
logger.error(e.getMessage(),e);
return Result.error("-100","注册错误");
} return Result.success("success");
} /**
* login:(登录).
* @author xbq
* Date:2017年11月23日下午6:00:09
*
* @param nickName
* @param password
* @return
*/
@ApiOperation(value="用户登录", notes="用户登录")
@ApiImplicitParams({
@ApiImplicitParam(paramType="query", name="nickName", dataType="String", required=true, value="用户的姓名"),
@ApiImplicitParam(paramType="query", name="password", dataType="String", required=true, value="用户的密码")
})
@RequestMapping(value = "/login", method = RequestMethod.GET)
public Object login(String nickName , String password) {
if(StringUtils.isEmpty(nickName)){
return Result.error("-100","nickName为空");
}
if(StringUtils.isEmpty(password)){
return Result.error("-100","password为空");
}
// 根据用户名查询密码
User userResult = null;
try {
userResult = userService.findUserByIdOrName(null, nickName);
} catch (Exception e1) {
logger.error(e1.getMessage(),e1);
return Result.error("-100","根据用户名查询用户密码错误");
}
if(userResult == null) {
return Result.error("-100","不存在该用户名");
}
// 将数据库中的密码 和 界面传来的密码进行验证
boolean flag = MD5Util.verify(password, userResult.getPassword());
if(!flag) {
return Result.error("-100","密码错误");
}
User user = null;
try {
User userParam = new User();
userParam.setNickName(nickName);
user = userService.findUser(userParam);
} catch (Exception e) {
logger.error(e.getMessage(),e);
return Result.error("-100","根据用户名查询用户错误");
}
if(user == null) {
return Result.error("-100","用户名或密码错误");
}
// 生成token
String token = System.currentTimeMillis() + "";
user.setToken(token);
return Result.success(user);
} /**
* account:(查询账户信息).
* @author xbq
* Date:2017年11月23日下午6:00:18
*
* @param id
* @return
*/
@ApiOperation(value="获取指定id用户的详细信息", notes="根据user的id来获取用户详细信息")
@ApiImplicitParam(paramType="query", name="id", dataType="Integer", required=true, value="用户id")
@RequestMapping(value = "/account", method = RequestMethod.GET)
public Object account(Integer id){
User user = null;
try {
user = userService.findUserByIdOrName(id ,null);
} catch (Exception e) {
e.printStackTrace();
}
UserDetail target = new UserDetail();
org.springframework.beans.BeanUtils.copyProperties(user, target); return Result.success(target);
}
}

完成上述代码后,打包Spring Boot程序并启动,打开浏览器访问:http://localhost:8080/swagger-ui.html,就能看到前文所展示的RESTful API的页面。

SpringBoot(十四)-- 整合Swagger2的更多相关文章

  1. springboot(十四):springboot整合shiro-登录认证和权限管理(转)

    springboot(十四):springboot整合shiro-登录认证和权限管理 .embody{ padding:10px 10px 10px; margin:0 -20px; border-b ...

  2. springboot笔记08——整合swagger2

    Swagger是什么? Swagger是一个RESTFUL 接口的文档在线自动生成和功能测试的框架.利用swagger2的注解可以快速的在项目中构建Api接口文档,并且提供了测试API的功能. Spr ...

  3. SpringBoot进阶教程(七十四)整合ELK

    在上一篇文章<SpringBoot进阶教程(七十三)整合elasticsearch >,已经详细介绍了关于elasticsearch的安装与使用,现在主要来看看关于ELK的定义.安装及使用 ...

  4. springboot(十四):springboot整合shiro-登录认证和权限管理

    这篇文章我们来学习如何使用Spring Boot集成Apache Shiro.安全应该是互联网公司的一道生命线,几乎任何的公司都会涉及到这方面的需求.在Java领域一般有Spring Security ...

  5. SpringBoot进阶教程(二十四)整合Redis

    缓存现在几乎是所有中大型网站都在用的必杀技,合理的利用缓存不仅能够提升网站访问速度,还能大大降低数据库的压力.Redis提供了键过期功能,也提供了灵活的键淘汰策略,所以,现在Redis用在缓存的场合非 ...

  6. springboot(十四):springboot整合mybatis

    org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'multipart/form-data;bounda ...

  7. 从零开始的SpringBoot项目 ( 四 ) 整合mybatis

    一.创建一个SpringBoot项目 从零开始的SpringBoot项目 ( 二 ) 使用IDEA创建一个SpringBoot项目 二.引入相关依赖 <!--mysql数据库驱动--> & ...

  8. SpringBoot(十四)_springboot使用内置定时任务Scheduled的使用(一)

    为什么使用定时? 日常工作中,经常会用到定时任务,比如各种统计,并不要求实时性.此时可以通过提前设置定时任务先把数据跑出来,后续处理起来更方便. 本篇文章主要介绍 springboot内置定时任务. ...

  9. springboot(十四)-分库分表-自动配置

    上一节我们是手动配置数据源的,直接在java代码里写数据库的东西,这操作我个人是不喜欢的.我觉得这些东西就应该出现在application.yml文件中. 还有,万一我们的项目在使用之后,突然需要改变 ...

  10. SpringBoot(十四):SpringCloud初步认识

    SpringCloud是一个基于SpringBoot实现的云应用开发工具,它为开发人员提供了一些工具来快速构建分布式系统中的一些常见模式(例如配置管理.服务发现.断路器.智能路由.微代理.控制总线.一 ...

随机推荐

  1. FCKEditor在IE10下的不兼容问题解决方法

    环境介绍:FCKEditor 版本 2.x.x 问题:IE10 下FCKEditor不兼容,显示不出来 关键词:不同于其他方法之处是第一个关键点,其他网友的正则表达式不对 解放方法:(可以直接< ...

  2. normalize.css的使用

    normalize.css有下面这几个目的: 保护有用的浏览器默认样式而不是完全去掉它们一般化的样式:为大部分HTML元素提供修复浏览器自身的bug并保证各浏览器的一致性优化CSS可用性:用一些小技巧 ...

  3. cocos2d-x 开发用到的工具

    1.VertexHelper 可用于多边形顶点的计算,可视化定点编辑器,用它创建的顶点信息可以直接导出为Box2D可使用的代码 https://github.com/jfahrenkrug/Verte ...

  4. Java 下一代: 函数式编码风格——Groovy、Scala 和 Clojure 共享的函数结构及其优势

    原文地址 本文内容 命令式处理 函数式处理 函数式编程的优势 所有 Java 下一代语言都包括函数式编程结构,让您可以从一个更高的抽象层面来思考问题.然而,语言间术语的不同使得难以看到类似的结构.本期 ...

  5. 微软BI SSRS 2012 Metro UI Win 8 风格的报表课程案例全展示

    开篇介绍 微软BI SSRS 2012 Metro UI 高端报表视频教程 (http://www.hellobi.com/course/15)课程从2014年6月开始准备,于2014年9月在 天善B ...

  6. .NET 同步与异步 之 警惕闭包(十)

    本随笔续接:.NET 同步与异步 之 原子操作和自旋锁(Interlocked.SpinLock)(九) 至此.同步与异步 相关的常规操作(比较常见的操作).差不多已经介绍完毕. 本随笔就着重说一下闭 ...

  7. [AaronYang]那天有个小孩跟我说Js-NodeJS[AY0]-EJS

    按照自己的思路学习Node.Js 随心出发.EJS是Node.js中express框架中使用的一个模版引擎,当然还有Jade 我的学习就靠网上查资料,没有买书系统学,自己整理,如果有用了哪位大神的代码 ...

  8. system函数遇到的问题

     这几天调程序(嵌入式linux),发现程序有时就莫名其妙的死掉,每次都定位在程序中不同的system()函数,直接在shell下输入system()函数中调用的命令也都一切正常.就没理这个bug,以 ...

  9. Windows 不能复制文件到远程服务器的解决办法

    1.  开始 -> 运行->浏览->C:\Windows\System32\rdpclip.exe->打开. 2. 打开资源管理器的进程可以看到 rdp复制粘贴正在运行,即可.

  10. 趣文分享:有人将Android开发环境比作女人

    (一个移动开发者大会活动推荐:http://www.eoeandroid.com/thread-303943-1-1.html) 趣文分享:有人将Android开发环境比作女人 在日常开发工作中,我们 ...