两者之间有什么区别吗?
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";
}
}发布于 2010-06-09 04:27:32
它们很相似,但并不完全相同。
第二种方法将创建一个新的内部请求,并将其转发到第二个控制器,而第一种方法将重用相同的请求对象。
这是否重要取决于每个控制器对请求做了什么。
我发现使用直接方法调用将控制器链接在一起是Spring带注释的控制器更吸引人的方面之一,它可以产生比转发请求更自然的流。
与往常一样,您的里程数可能会有所不同。
发布于 2010-06-14 01:56:42
通过自己创建控制器,您将防止Spring向其中注入任何依赖项。这可能会导致您自创建的控制器无法正常工作。
如果您确实需要像这样链接控制器,我会向Spring应用程序上下文请求您想要的控制器实例,而不是使用new操作符创建一个。
https://stackoverflow.com/questions/2997866
复制相似问题