Можно ли пометить метод с аннотацией @InitBinder как статический?

Глядя на документы и несколько примеры @InitBinder онлайн, я никогда не видел эти методы, отмеченные как static. Моя IDE утверждает, что они могут быть помечены как static, я не вижу никаких ошибок при этом, и концептуально я думаю, что вы можете пометить это таким образом.

Есть ли недостатки в этом? Я понимаю, что метод не должен возвращать значение.


person vphilipnyc    schedule 18.07.2017    source источник


Ответы (1)


Код внутри Spring Web, который обрабатывает аннотацию @InitBinder, не делает никаких предположений или требований, является ли он статическим или нет.

Разница между статическим и нестатическим методом @InitBinder сводится к стандартной семантике Java статических и нестатических методов, что означает доступ к нестатическим переменным и возможность переопределения метода.

Если вам не нужны переменные или методы экземпляра, вы можете безопасно сделать метод @InitBinder статическим, а также приватным.

Независимо от того, является ли метод @InitBinder статическим или нет, его можно вызывать несколько раз для каждого запроса, например, по крайней мере один раз для каждого параметра @PathVariable, @RequestParam, @RequestHeader или @CookieValue метода обработки запроса. Вы можете проверить цель, привязанную к объекту WebDataBinder, используя WebDataBinder#getObjectName(), и настроить конфигурацию связывателя на основе этой информации.

person Oleg Estekhin    schedule 30.08.2017