Spring MVC, вперед - PullRequest
       5

Spring MVC, вперед

17 голосов
/ 08 июня 2010

Есть ли разница между

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

Ответы [ 2 ]

22 голосов
/ 13 июня 2010

Создавая контроллеры самостоятельно, вы не позволите Spring вводить в них какие-либо зависимости.Это может привести к тому, что ваши самодельные контроллеры будут работать некорректно.

Если вам действительно нужно связать контроллеры таким образом, я бы попросил контекст приложения Spring для экземпляра контроллера, который вы хотитевместо создания с оператором new.

16 голосов
/ 09 июня 2010

Они похожи, но не совсем одинаковые.

Второй подход создаст новый внутренний запрос для пересылки второму контроллеру, тогда как первый будет повторно использовать тот же объект запроса.

То, имеет ли это значение, зависит от того, что каждый из контроллеров делает с запросом.

Я обнаружил, что объединение контроллеров в цепочку с использованием прямых вызовов методов - это один из наиболее привлекательных аспектов аннотированных контроллеров Spring, он может обеспечить гораздо более естественный поток, чем перебрасывание перенаправленных запросов.

Как всегда, ваш пробег может отличаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...