我已经使用Spring MVC三个月了。我正在考虑一种动态添加RequestMapping的好方法。这是因为有必要将控制器部件放入库中,然后进行动态添加。无论如何,我能想到的唯一方法就是声明这样的控制器:
@Controller @RequestMapping("/mypage") public class MyController { @RequestMapping(method = RequestMethod.GET) public ModelAndView mainHandler(HttpServletRequest req) { return handleTheRest(req); } }
这样做不好,因为基本上我没有使用Spring。然后,我将无法使用表单绑定,批注等。我想将动态添加requestMappings到可以通过自动绑定像通常的MVC控制器一样进行注释的类的方法,以便避免手动处理HttpServletRequest。
有任何想法吗?}
Spring MVC使用HandlerMapping接口的实现来执行URL映射。通常盒子中使用了的那些是默认的实现,即SimpleUrlHandlerMapping,BeanNameUrlHandlerMapping和DefaultAnnotationHandlerMapping。
HandlerMapping
SimpleUrlHandlerMapping
BeanNameUrlHandlerMapping
DefaultAnnotationHandlerMapping
如果您想实现自己的映射机制,这很容易做到-只需实现该接口(或更可能是extend AbstractUrlHandlerMapping),在您的上下文中将该类声明为Bean,DispatcherServlet当有请求时将使用该类进行查询。需要映射。
AbstractUrlHandlerMapping
DispatcherServlet
请注意,HandlerMapping在一个上下文中,您可以具有任意多个实现。将依次咨询他们,直到其中之一匹配为止。