HandlerMethodArgumentResolver 的用法

public class TokenArgumentResolver implements HandlerMethodArgumentResolver {
    private static final Logger log = LoggerFactory.getLogger(TokenArgumentResolver.class);

    public TokenArgumentResolver() {
    }

    public boolean supportsParameter(MethodParameter methodParameter) {
        return methodParameter.getParameterType().equals(A.class);
    }

    public Object resolveArgument(MethodParameter methodParameter, ModelAndViewContainer modelAndViewContainer, NativeWebRequest nativeWebRequest, WebDataBinderFactory webDataBinderFactory) {
        return AuthUtil.getUser();
    }
}
    public boolean supportsParameter(MethodParameter methodParameter) {
        return methodParameter.getParameterType().equals(A.class);
    }


这个方法检查控制器方法的参数类型是否为A。如果是,返回true,表明这个自定义的HandlerMethodArgumentResolver能够处理这个参数。如果不是,返回false,意味着Spring MVC会继续查找下一个HandlerMethodArgumentResolver来处理这个参数。

public Object resolveArgument(MethodParameter methodParameter, ModelAndViewContainer modelAndViewContainer, NativeWebRequest nativeWebRequest, WebDataBinderFactory webDataBinderFactory) {
    return AuthUtil.getUser();
}

这个方法负责实际解析参数的逻辑。在这里,它简单地调用了AuthUtil.getUser()方法,假设这是一个全局的认证工具类,能够获取当前登录的用户信息。返回的结果将作为KeeperUser类型的参数值,直接传递给控制器方法。

这种类型的HandlerMethodArgumentResolver特别适用于需要频繁访问当前登录用户信息的场景。例如,你可能有多个控制器方法都需要访问用户的详细信息,如用户名、权限等级等。通过使用自定义的HandlerMethodArgumentResolver,你可以在方法签名中直接声明A类型的参数,而不需要每次手动调用AuthUtil.getUser()

注册Resolver

为了使这个自定义的HandlerMethodArgumentResolver生效,你需要在Spring MVC的配置中注册它。这通常通过实现WebMvcConfigurer接口并重写addArgumentResolvers方法来完成:

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
        resolvers.add(new YourCustomResolver());
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值