弹簧MVC,前进

2022-09-02 23:53:08

两者之间有什么区别吗?

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";
    }
}

答案 1

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

如果你真的需要像这样链接控制器,我会向Spring应用程序上下文询问你想要的控制器的实例,而不是与操作员一起创建一个。new


答案 2

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

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

这是否重要取决于每个控制器对请求执行的操作。

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

与往常一样,您的里程可能会有所不同。


推荐