Spring MVC,转发

use*_*512 17 java spring servlets spring-mvc

两者之间有什么区别吗?

public class Controller1 extends AbstractController {
    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        return new AnotherController().handleRequest(request, response);
    }
}
Run Code Online (Sandbox Code Playgroud)

@Controller
public class Controller1 {

    @RequestMapping ...
    public String handleRequest() {
        return "forward:/path_to_my_another_controller";
    }
}
Run Code Online (Sandbox Code Playgroud)

dav*_*000 22

通过自己创建控制器,您将阻止Spring向其中注入任何依赖项.这可能会导致您自行创建的控制器无法正常工作.

如果你真的需要链接这样的控制器,我会向Spring应用程序上下文询问你想要的控制器实例,而不是用new运算符创建一个.

  • 更好的是,你可以@Autowired另一个控制器. (7认同)

ska*_*man 16

它们相似,但不完全相同.

第二种方法将创建一个新的内部请求转发到第二个控制器,而第一个将重新使用相同的请求对象.

这是否重要取决于每个控制器对请求的作用.

我发现使用直接方法调用将控制器链接在一起是Spring注释控制器更具吸引力的方面之一,它可以比转发请求转发请求更自然.

一如既往,您的里程可能会有所不同