spring boot集成swagger,自定义注解,拦截器,xss过滤,异步调用,guava限流,定时任务案例, 发邮件
本文介绍spring boot集成swagger,自定义注解,拦截器,xss过滤,异步调用,定时任务案例
集成swagger--对于做前后端分离的项目,后端只需要提供接口访问,swagger提供了接口调用测试和各种注释的可视化web界面。
配置swagger的扫描包路径,api信息等,见配置类SwaggerConfig。项目中遇到的下列注解都由swagger提供:
@Api、@ApiOperation、@ApiModel、@ApiModelProperty
访问http://localhost/swagger-ui.html#/就可以看到swagger文档,输入入参,点击try it out调接口,如图:

自定义注解,拦截器,过滤器--spring boot提供了跨域请求的注解@CrossOrigin(当然也可以写一个全局的过滤器),详情见类UserController.class。
项目中XssFilter类定义了跨站脚本攻击(xss攻击)过滤,用到了ESAPI安全处理的jar包。
注解@LogForTimeConsumer实现了对方法的执行时间的日志输出;
注解@LogForController实现了view层出参和入参的日志输出;
注解@AutoValidate实现了对@RequestBody修饰的实体类(见类RegisterRequest.class)中属性的合法性的校验(即属性的正则表达式校验);
注解@AccessLimit实现了接口防刷的功能;
注解@TokenValidate实现了用户是否登录的校验,必须登录的接口加此注解;
拦截器RequestTimeConsumingInterceptor实现了接口耗时统计;
拦截器RepeatSubmitInterceptor实现了重复提交的校验;
拦截器RateLimitInterceptor实现了服务器访问的限流操作。
异步调用--UserController.class中注册接口提供了异步发送邮件的功能。只需要在异步调用的方法添加注解@Async和在启动类加注解@EnableAsync,
启动项目并调接口查看执行时间可以看到异步调用已经生效。
定时任务--启动类添加注解@EnableScheduling,用@Component放到定时任务的类上,@Scheduled放到定时任务的方法上就可以实现定时任务,见类TaskTest.class。
发邮件-EmailController.class;
项目源码地址:https://github.com/zhzhair/spirng-boot-demos.git
spring boot集成swagger,自定义注解,拦截器,xss过滤,异步调用,guava限流,定时任务案例, 发邮件的更多相关文章
- Spring Boot 集成 Swagger,生成接口文档就这么简单!
之前的文章介绍了<推荐一款接口 API 设计神器!>,今天栈长给大家介绍下如何与优秀的 Spring Boot 框架进行集成,简直不能太简单. 你所需具备的基础 告诉你,Spring Bo ...
- 【Swagger】可能是目前最好的 Spring Boot 集成 swagger 的方案
[Swagger]可能是目前最好的Spring Boot集成 swagger 的方案 
去年这个时候简单的摸索了一下三维的GIS相关的东西,也就是仅仅玩耍了一把,这次来点真正用的上的干货效果效果: 1.加载自定义百度样式的瓦片效果 2.加载自定义百度样式的缩放效果 3.快速手动进去咱的大 ...
- Python 原生协程------asyncio
协程 在python3.5以前,写成的实现都是通过生成器的yield from原理实现的, 这样实现的缺点是代码看起来会很乱,于是3.5版本之后python实现了原生的协程,并且引入了async和aw ...
- asp.net core 2.2 中的过滤器/筛选器(上)
ASP.NET Core中的过滤器/筛选器 通过使用 ASP.NET Core MVC 中的筛选器,可在请求处理管道中的特定阶段之前或之后运行代码. 注意:本主题不适用于 Razor 页面. ASP. ...
- mysql时间比较
' and ZXBZ ='Y' AND SQRQ >= '2017-04-28 00:00:00' AND SQRQ <= '2017-04-28 23:59:59'; ;
- 第一个Appium脚本
测试环境 Win 10 64bit Python 3.5 Appium 1.7.2 Andriod 5.1.1 模拟器& Android 5.1 MX4 测试App:考研帮Android版 3 ...
- 使用excel整理脚本
的时候需要通过excel数据初始化脚本,当数据过多的时候,脚本也就很多.这里记录一个平时用excel初始化脚本的小技巧. excel中在空单元格中写如下值: ="INSERT INTO db ...
- rpm打包要点
1. 查看变量: rpmbuild --showrc 2. spec文件 头部 多行的部分,如 %changelog 或 %description 由指令下一行开始,空行结束.一些不需要的行 (如 B ...
- magento 2 method config
1. 模板渲染静态文件: <?php echo $this->getViewFileUrl('requirejs::require.js'); ?> 2.
- JS在一个数组中查找某个用户输入的值,返回对应值所在索引值
方法有很多种 第一:直接循环,判断输出 第二:使用indexOf 正常来说,为了增加工作效率一般会选择indexOf,但是indexOf存在兼容性问题,因此最完善的写法如下 function inde ...
- windows下的vimrc
很奇怪的事...不会解释 建议编译位置第一次设置为 map <F9> :call CR()<CR>func! CR()exec "w"exec " ...