关于 <mvc:argument-resolvers> 的一次使用记录

本文探讨了在SpringMVC框架中如何通过自定义参数解析器AdminBaseFormArgumentResolver来处理不同请求中的参数,解释了该方法仅在携带特定参数或注解时生效的原因,并分享了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    使用场景: 项目里面在做一个请求时候发现,不同的请求,有些请求会跳转到 spring mvc的自定义方法中,有些却不进去。自定义的方法:

   

<mvc:annotation-driven >
        <mvc:argument-resolvers>
            <bean class="com.zhuanche.car.web.resolver.AdminBaseFormArgumentResolver">
                <property name="adminSessionUserManager" ref="adminSessionUserManager"/>
            </bean>
        </mvc:argument-resolvers>
    </mvc:annotation-driven>
AdminBaseFormArgumentResolver 方法:
public class AdminBaseFormArgumentResolver extends BaseFormArgumentResolver {

    private static final Logger logger = LoggerFactory.getLogger(AdminBaseFormArgumentResolver.class);

    AdminSessionUserManager adminSessionUserManager;
    @Override
    protected SessionUser getSessionUser(NativeWebRequest webRequest) {
        if(SecurityUtils.getSubject().isAuthenticated()){
            String username = (String) SecurityUtils.getSubject().getPrincipal();
            logger.debug("username = {}", username);
            return adminSessionUserManager.getSessionUser(username);
        }
        throw new UnauthenticatedException("当前用户未登录");
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        Assert.notNull(this.adminSessionUserManager, "property adminSessionUserManager is required.");
    }

    public void setAdminSessionUserManager(AdminSessionUserManager adminSessionUserManager) {
        this.adminSessionUserManager = adminSessionUserManager;
    }
}

上网搜了后就,最终明白:这个方法是和 传的参数有关系,只要带有某一些参数或者特定的注解,就会进入自定义的方法。如果不带有,则不会进入。但是原理 真心不太明白,而且也不知道 在哪里控制的。下面的文章有类似的用法:

 https://blog.youkuaiyun.com/lqzkcx3/article/details/78794636

 

转载于:https://www.cnblogs.com/thinkingandworkinghard/p/9779574.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值