springmvc 下使用自定义注解获取登录信息

本文介绍了在SpringMVC项目中,为了保持Controller层的单元测试能力,避免依赖全局环境获取登录用户信息的问题,提出了通过自定义注解@logined实现这一目标的方法。文章详细讲解了实现过程,包括自定义注解的创建、实现HandlerMethodArgumentResolver接口以及在SpringMVC配置文件中的设置。
摘要由CSDN通过智能技术生成

使用原因

大家的项目中在controller层是怎样获取登录用户的信息呢?

User loginUser=LoginUtil.getLoginUser();

我想有些同学是通过这样获得的,如果这样实现的话,
恭喜你,你的Controller层已经丧失了单元测试的能力。

因为执行这个controller所需要的参数并没有完全通过参数列表来获得,而依赖于全局环境(web环境)
这样做使得springmvc为环境解耦所设计的整个架构变得毫无意义。

实现

那怎么样写才算是高大上呢?先贴出最后效果

@RequestMapping(...)
public 返回值 方法名(@logined User user){
}

相信大家一眼就能看出他的优点。下面说一下如何实现

自定义注解 @logined

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.PARAMETER)
public @interface Logined {
}

实现HandlerMethodArgumentResolver接口

public class LoginedArgumentResolver implements HandlerMethodArgumentResolver{

/**
 * 检查解析器是否支持解析该参数
 */
@Override
public boolean supportsParameter(MethodParameter parameter) {
    if(
            //如果该参
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值