java – 如何确定给定URL的控制器(spring)
发布时间:2020-12-15 08:30:24 所属栏目:Java 来源:网络整理
导读:使用 spring DefaultAnnotationHandlerMapping如何查找最终将处理给定URL的Controller. 我目前有这个,但感觉应该比迭代100多个请求映射更清晰: public static Object getControllerForAction(String actionURL) { ApplicationContext context = getApplicat
使用
spring DefaultAnnotationHandlerMapping如何查找最终将处理给定URL的Controller.
我目前有这个,但感觉应该比迭代100多个请求映射更清晰: public static Object getControllerForAction(String actionURL) { ApplicationContext context = getApplicationContext(); AnnotationHandlerMapping mapping = (AnnotationHandlerMapping) context.getBean("annotationMapper"); PathMatcher pathMatcher = mapping.getPathMatcher(); for (Object key: mapping.getHandlerMap().keySet()) { if (pathMatcher.match((String) key,actionURL)){ return mapping.getHandlerMap().get(key); } } return null; } 解决方法
出于此问题的目的,DefaultAnnotationHandlerMapping及其超类中的所有有趣方法都受到保护,因此外部代码不可见.但是,编写DefaultAnnotationHandlerMapping的自定义子类会覆盖这些方法并使它们公开,这将是微不足道的.
既然你需要能够提供路径而不是请求对象,我建议使用AbstractUrlHandlerMapping的lookupHandler作为一个很好的候选者.它仍然需要你为它提供一个请求对象以及路径,但是该请求对象仅用于传递给validateHandler()方法,该方法什么都不做,所以你可能在那里提供null. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |