文档章节

Kotlin使用spring-boot搭建restful api

jackblues
 jackblues
发布于 2017/07/21 17:58
字数 251
阅读 51
收藏 5
点赞 0
评论 0

主题

 使用kotlin 语言,加上spring-boot框架,使用gradle构建的restful风格的api应用,顺便熟悉kotlin语法特性

特性

  • restful 风格api举例
  • Token 身份验证,使用过滤器
  • 方法级别权限控制api接口
  • 处理异常,自定义返回结果
  • servlet异步响应
  • model数据处理

代码

http://gitter.com/blueswu/spring-boot-restful   

处理异常自定返回


@RestController
class GreetingController {

    @ExceptionHandler
    @ResponseBody
    fun handleServiceException(req:HttpServletRequest , response:HttpServletResponse , e:Exception ):ErrorResponse  
    {
       var status = HttpStatus.OK.value() 
       status = when(e){
        is AccessDeniedException -> HttpStatus.FORBIDDEN.value()
	else -> status
       }

       if(status != 200){
          val error = ErrorResponse(status,e.getLocalizedMessage())
         response.setStatus(status)
         return error
      }
       else throw e
    }
}

servlet异步响应

  1. 入口处注册EnableAsync
@SpringBootApplication
@EnableAsync
open class Application{
@Bean
@Qualifier(value = "taskExecutor")
open fun  taskExecutor(): Executor  {
        val executor:ThreadPoolTaskExecutor = ThreadPoolTaskExecutor()
        executor.setCorePoolSize(2)
        executor.setMaxPoolSize(2)
        executor.setQueueCapacity(500)
        executor.setThreadNamePrefix("GithubLookup-")
        executor.initialize()
        return executor
 }
}
  1. service处理类方法注册Async
@Service
class LookService {
   @Async("taskExecutor")
   fun  findUsers():CompletableFuture<User> {
      val results:User =User(0,"all users") 
      Thread.sleep(5000L)
       return CompletableFuture.completedFuture(results)
   }
}

方法级别权限控制

  1. 安全设置EnableGlobalMethodSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
open class WebSecurityConfig : WebSecurityConfigurerAdapter() {
}
  1. Controller注册PreAuthorize
@RestController
class GreetingController {
    @GetMapping
    @PreAuthorize("hasRole('ADMIN')")  
        fun getUsers( ) {
    }
}

© 著作权归作者所有

共有 人打赏支持
jackblues
粉丝 16
博文 28
码字总数 9669
作品 0
深圳
技术主管
SpringBoot接口文档自动生成

由于Spring Boot能够快速开发、便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API。而我们构建RESTful API的目的通常都是由于多终端的原因,这些终端会共用很多底层业...

mkStone ⋅ 04/10 ⋅ 0

jackblues/spring-boot-restful

Spring Boot Example This is a basic example of how to use Kotlin in a Spring Boot application. See the accompanying tutorial for more information. To run: $ gradle bootRun Api r......

jackblues ⋅ 2017/07/22 ⋅ 0

Spring Boot中使用Swagger2生成RESTful API文档(转)

效果如下图所示: 添加Swagger2依赖 在中加入Swagger2的依赖 注意:如果是2.2版本的,有可能在右下角会出现错误,那么请升级为2.7版本的即可解决这个问题。 创建Swagger2配置类 在同级创建S...

easonjim ⋅ 2017/09/13 ⋅ 0

ZHENFENGSHISAN/perfect-ssm

Quick Start 项目简介 ssm系列 ssm-demo:Spring+SpringMVC+Mybatis+easyUI整合 perfect-ssm:RESTful API+redis缓存 ssm-cluster:前后端分离+集群部署 ssm-dubbo:dubbo服务化 ssm-micro-se......

ZHENFENGSHISAN ⋅ 2017/09/18 ⋅ 0

spring boot简单实现rest服务

问题 最开始我是想使用Spring MVC搭建一个简单的REST服务,去官网看了看教程,现在Spring胆越来越大了,需要我集成一个maven的父项目,我并不愿意继承Spring的父项目。然后,就开始下面的探索...

亚林瓜子 ⋅ 06/12 ⋅ 0

Spring Boot 2.0 WebFlux 上手系列课程:快速入门(一)

02:WebFlux 快速入门实践 ## Spring Boot 2.0 spring.io 官网有句醒目的话是: BUILD ANYTHING WITH SPRING BOOT Spring Boot (Boot 顾名思义,是引导的意思)框架是用于简化 Spring 应用从...

泥沙砖瓦浆木匠 ⋅ 04/15 ⋅ 0

Spring boot入门教程

1、Spring Boot简介 Spring Boot是用来简化Spring应用初始搭建以及开发过程的全新框架,被认为是Spring MVC的“接班人”。 简化配置,化繁为简。 备受关注,是下一代框架。 微服务的入门级微...

AKyS佐毅 ⋅ 01/05 ⋅ 1

bboss elasticsearch v5.0.6.2 发布

The best elasticsearch highlevel java rest api-----bboss bboss elasticsearch v5.0.6.2 发布 v5.0.6.2新增功能及改进: 1.升级最新的bboss版本到5.0.5.7 2.新增bboss es rest boot模块,......

bboss ⋅ 04/29 ⋅ 0

使用Kotlin进行服务器端开发

简介 Kotlin非常适合开发服务器端应用程序,允许编写简明明了的代码,同时保持与现有基于Java的技术栈的完全兼容性和平滑的学习曲线: 表现力:Kotlin的创新语言功能,如支持类型安全的构建器...

Pape ⋅ 2017/10/24 ⋅ 0

Spring boot优雅的整合Swagger

一、简介 运用 Spring boot 搭建项目简单快捷,但在我们开发中,还有一个问题,是必须且让人感到头疼,那就是前后端代码联调,有时很难断定问题是出在哪个环节,而 Swagger 则解决了这个繁杂...

南烟阁 ⋅ 2017/12/08 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 今天 ⋅ 0

sbt网络问题解决方案

转自:http://dblab.xmu.edu.cn/blog/maven-network-problem/ cd ~/.sbt/launchers/0.13.9unzip -q ./sbt-launch.jar 修改 vi sbt/sbt.boot.properties 增加一个oschina库地址: [reposit......

狐狸老侠 ⋅ 今天 ⋅ 0

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 今天 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 今天 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

深入Java多线程——Java内存模型深入(2)

5. final域的内存语义 5.1 final域的重排序规则 1.对于final域,编译器和处理器要遵守两个重排序规则: (1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用...

江左煤郎 ⋅ 今天 ⋅ 0

面试-正向代理和反向代理

面试-正向代理和反向代理 Nginx 是一个高性能的反向代理服务器,但同时也支持正向代理方式的配置。

秋日芒草 ⋅ 今天 ⋅ 0

Spring 依赖注入(DI)

1、Setter方法注入: 通过设置方法注入依赖。这种方法既简单又常用。 类中定义set()方法: public class HelloWorldOutput{ HelloWorld helloWorld; public void setHelloWorld...

霍淇滨 ⋅ 昨天 ⋅ 0

马氏距离与欧氏距离

马氏距离 马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为Σ的随机变量之间的差异程度。 如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧氏距离,如果协方差矩阵为对角阵,则其也...

漫步当下 ⋅ 昨天 ⋅ 0

聊聊spring cloud的RequestRateLimiterGatewayFilter

序 本文主要研究一下spring cloud的RequestRateLimiterGatewayFilter GatewayAutoConfiguration @Configuration@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMi......

go4it ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部