Spring MVC,转发
两者之间有什么区别吗?
public class Controller1 extends AbstractController { @Override protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { return new AnotherController().handleRequest(request, response); } }
和
@Controller public class Controller1 { @RequestMapping ... public String handleRequest() { return "forward:/path_to_my_another_controller"; } }
它们相似,但不完全相同。
第二种方法将创建一个新的内部请求转发到第二个控制器,而第一个将重新使用相同的请求对象。
这是否重要取决于每个控制器对请求的作用。
我发现使用直接方法调用将控制器链接在一起是Spring注释控制器更具吸引力的方面之一,它可以比转发请求转发请求更自然。
一如既往,您的里程可能会有所不同
通过自己创建控制器,您将阻止Spring向其中注入任何依赖项。 这可能会导致您自行创建的控制器无法正常工作。
如果你真的需要链接这样的控制器,我会向Spring应用程序上下文询问你想要的控制器实例,而不是用new
运算符创建一个。