關於 的一次使用記錄


    使用場景: 項目里面在做一個請求時候發現,不同的請求,有些請求會跳轉到 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.csdn.net/lqzkcx3/article/details/78794636

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM