后端接口,经常会用token获取对应的账号信息。于是考虑将这个步骤封装起来。

之前项目使用ThreadLocal去做这样的事情,但昨天看SpringBoot的官方文档,发现借助框架的功能也可以做这样的事情,而且更方便,直观

@ModelAttribute 介绍

FOR EXAMPLE:

@RestController
public class TestController {
@ModelAttribute
public String add(){
return "哈哈";
}
@RequestMapping("hello")
public String hello(@ModelAttribute String haha){
return haha;
}
}

被@ModelAttribute注释的add()方法会在此controller每个方法执行前被执行,add()被ModelAttribute注解的方法的返回值可以在此controller的RequestMapping方法中获取到。

因此,可以利用@ModelAttribute注解封装需要在Controller之前进行处理的步骤

@ControllerAdvice 介绍

通常,@ExceptionHandler、@InitBinder和@ModelAttribute注解的方法声明在Controller类中。

如果希望这些注解能更全局的应用,那么就可以把这些方法声明在@ControllerAdvice或者@RestControllerAdvice中。

因此,可以用@ControllerAdvice和@ModelAttribute去全局处理token

具体实现

全局处理:

@ControllerAdvice
public class LoginRegisterHandle { @Autowired
private UserService userService; @ModelAttribute
public UserInfo registerUserInfo(HttpServletRequest request){
// 检测有没有传token,没有则返回空
String token = request.getHeader("token");
if(token == null || token.equals("")){
return null;
}
return userService.getLoginUserInfo(token);
}
}

使用:

@RestController
public class TestController {
@GetMapping("hello")
public String hello(@ModelAttribute UserInfo user){
System.out.println(user.getId());
return "";
}
}

参考

SpringBoot 全局处理以及注入请求参数的更多相关文章

  1. SpringBoot 全局异常处理 @RestControllerAdvice +@ExceptionHandler 请求参数校验

    ControllerAdvice 指示带注释的类辅助“控制器”. 作为的特殊化@Component,允许通过类路径扫描自动检测实现类. 通常用于定义@ExceptionHandler, @InitBi ...

  2. SpringBoot 拦截器获取http请求参数

    SpringBoot 拦截器获取http请求参数-- 所有骚操作基础 目录 SpringBoot 拦截器获取http请求参数-- 所有骚操作基础 获取http请求参数是一种刚需 定义拦截器获取请求 为 ...

  3. SpringBoot 基于web应用开发(请求参数获取,静态资源,webjars)

    SpringBoot 基于web应用开发 一.Lombok使用 1.导入依赖库 <dependency>    <groupId>org.projectlombok</g ...

  4. struts请求参数注入的三种方式

    .请求参数的注入 在Struts2框架中,表单的提交的数据会自动注入到与Action对象相对应的属性.它与Spring框架中的IoC的注入原理相同,通过Action对象为属性提供setter方法注入 ...

  5. Springboot采用hibernate-validate验证请求参数

    在springboot项目使用hibernate-validate对请求参数添加注解进行校验 常用注解 @Null,标注的属性值必须为空 @NotNull,标注的属性值不能为空 @AssertTrue ...

  6. SpringBoot基础学习(二) SpringBoot全局配置文件及配置文件属性值注入

    全局配置文件 全局配置文件能够对一些默认配置值进行修改.SpringBoot 使用一个名为 application.properties 或者 application.yaml的文件作为全局配置文件, ...

  7. SpringMVC请求参数和响应结果全局加密和解密

    前提 前段时间在做一个对外的网关项目,涉及到加密和解密模块,这里详细分析解决方案和适用的场景.为了模拟真实的交互场景,先定制一下整个交互流程.第三方传输(包括请求和响应)数据报文包括三个部分: 1.t ...

  8. springboot(服务端接口)获取URL请求参数的几种方法

    原文地址:http://www.cnblogs.com/xiaoxi/p/5695783.html 一.下面为7种服务端获取前端传过来的参数的方法  常用的方法为:@RequestParam和@Req ...

  9. SpringBoot系列教程web篇之Post请求参数解析姿势汇总

    作为一个常年提供各种Http接口的后端而言,如何获取请求参数可以说是一项基本技能了,本篇为<190824-SpringBoot系列教程web篇之Get请求参数解析姿势汇总>之后的第二篇,对 ...

随机推荐

  1. asp.net mvc4 新特性

    摘自:ASP.MVC Web编程 几种模板的解释

  2. mount: unknown filesystem type 'ntfs'(转载)

    转自:http://www.siutung.org/post/455/ 今天将USB移动硬盘挂在CentOS上准备将压缩包拷贝下来的.  结果挂载移动硬盘的时候却提示: mount: unknown ...

  3. 洛谷P4315 月下“毛景树”(树剖+线段树)

    传送门 woc这该死的码农题…… 把每一条边转化为它连接的两点中深度较深的那一个,然后就可以用树剖+线段树对路径进行修改了 然后顺便注意在上面这种转化之后,树剖的时候不能搞$LCA$ 然后是几个注意点 ...

  4. window 下拉取github项目失败 (Permission denied (publickey))

    原因是github 帐号ssh 失效或者没有配置 1.找到gitcmd 并进入 2.在gitcmd 下切换到 安装git路劲\Git\usr\bin 3.提示在C:\Users\Administrat ...

  5. Veeam对于新病毒防御的建议

    Veeam对于新病毒防御的建议 前言 勒索软件GandCrab 上周末,在我们大家晒娃和欢度六一的时候.勒索软件分发平台 GandCrab 宣布将在一个月内关闭其RaaS(勒索软件即服务)业务平台.据 ...

  6. python删除列表中元素的方法

    删除列表中元素的三种方法-remove.pop.del 1 1.remove: 删除单个元素,删除首个符合条件的元素,按值删除 2 举例说明: 3 >>> str=[1,2,3,4, ...

  7. 进击的Python【第十三章】:Web前端基础之HTML与CSS样式

    进击的Python[第十四章]:Web前端基础之HTML与CSS样式 一.web框架的本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客 ...

  8. libcurl在centos6.4 64位操作系统上不支持https的解决方案

    rpm -e –nodeps 软件名 例如: 使用yum install nginx 安装了nginx, 这是如果直接使用yum remove nginx 的话,会把依赖的一些包也删掉, 所以要使用r ...

  9. 2017 JUST Programming Contest 3.0 B. Linear Algebra Test

    B. Linear Algebra Test time limit per test 3.0 s memory limit per test 256 MB input standard input o ...

  10. Retinex系列之McCann99 Retinex 分类: 图像处理 Matlab 2014-12-03 11:27 585人阅读 评论(0) 收藏

    一.McCann99 Retinex McCann99利用金字塔模型建立对图像的多分辨率描述,自顶向下逐层迭代,提高增强效率.对输入图像的长宽有 严格的限制,要求可表示成 ,且 ,. 上述限制来源于金 ...