SpringBoot 实现自定义注解与控制器参数注入

2019年2月21日07:40:01 发表评论 42 阅读

前言

有这样一个场景,在某个控制器中的参数中,需要从Request的Header中取到Authorization请求头,其中Authorization是Jwt的身份Token,我们需要取到Token中的uid字段,以用来判断当前的用户身份,在没有使用任何的权限身份管理框架的前提下,那么我们只能在Controller层进行一步步的调取,如果是有多个控制器的话,这样会增加很多的冗余代码,于是我们可以考虑使用自定义注解来实现类似于SpringBoot的参数注入。

广告也精彩

SpringBoot 实现自定义注解与控制器参数注入

正文

首先,我们需要定义一个自定义注解,命名为JwtToken

接下来我们需要一个解析器,其实在SpringBoot中已经为我们提供了相关的处理解析器-HandlerMethodArgumentResolver,我们只需要实现接口完成业务逻辑处理即可。

supportsParameter

supportsParameter接口是用于判断是否需要对该参数进行解析,如果该接口的返回值为true,则会继续执行resolveArgument接口方法,所以我们这里应为:

resolveArgument

resolveArgument接口是处理参数的分解,只有supportsParameter为true时才会调用此方法:

其中我的JwtUtil中取Token中的信息的方法为:

然后将我们写好的Resolver注入到SpringMVC的ArgumentResolvers中,如:

到这一步我们的所有步骤就已经完成了,于是我们可以给需要取值的参数加上@JwtToken即可,例如:

 

  • 微信号:sqymail
  • 微信扫一扫欢迎加我为好
  • weinxin
  • 交流QQ群号:248249544
  • IntelliJ IDEA,Java 技术交流
  • weinxin
  • A+
所属分类:java

发表评论

您必须登录才能发表评论!