Разница между handleRequestInternal и handleRequest - PullRequest
3 голосов
/ 23 марта 2012

Я только что начал весну, я обнаружил, что где-то мы используем handlerequest() метод в контроллере, а где-то мы используем handlerequestinternal() метод.

Я пробовал гуглить это, но не нашеллюбая конкретная точка.

Может ли кто-нибудь объяснить, в чем разница между этими двумя функциями и когда мы должны реализовать каждую из них?

Как я знаю, Spring Framework по умолчанию вызовет handlerequest() функцию.Таким образом, мы можем поместить туда наш уровень обслуживания.

Я уверен, что handlerequestinternal(), должно быть, предоставляет некоторые дополнительные функции, но не уверен.

Пожалуйста, помогите мне понять это.

Ответы [ 2 ]

7 голосов
/ 23 марта 2012

И handleRequest, и handleRequestInternal используются старой платформой контроллера Spring 2.0.

handleRequestInternal используется, когда вы расширяете один из предварительно предоставленных базовых классов поддержки (например, AbstractController, SimpleFormController и т. Д.). Они используют шаблон проектирования Template, и вы предоставляете свою бизнес-логику в этом методе.

handleRequest - метод, указанный на самом интерфейсе Controller. Если вы реализуете этот интерфейс напрямую, а не расширяете один из вышеперечисленных базовых классов, то вам необходимо напрямую реализовать handleRequest.

Оба устарели и не используются в контроллерах, написанных для Spring 2.5 и новее.

0 голосов
/ 09 мая 2018
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
    this.checkAndPrepare(request, response, this instanceof LastModified);
    if (this.synchronizeOnSession) {
        HttpSession session = request.getSession(false);
        if (session != null) {
            Object mutex = WebUtils.getSessionMutex(session);
            synchronized(mutex) {
                return this.handleRequestInternal(request, response);
            }
        }
    }

    return this.handleRequestInternal(request, response);
}

protected abstract ModelAndView handleRequestInternal(HttpServletRequest var1, HttpServletResponse var2) throws Exception;

}

если в классах шаблонов контроллера, таких как AbstractController и ParameterizableViewConterollers, в этом случае будут дочерние классы интерфейса Controller, так что пружинные люди внутренне переопределяют метод handleRequest и вызывают абстрактный метод handleRequestInternal, поэтому всякий раз, когда мы используем классы шаблона, мы используем этот метод, в противном случае мы используем метод handleRequest () только эта разница, я думаю!

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