Ответ 1
Как описано в документации, BeanNameViewResolver
разрешает View
, объявленный как beans. Обычно вам это нужно для некоторых специальных целей.
Представьте себе, например, что один из ваших контроллеров должен отображать электронную таблицу Excel. Итак, вы подклассом AbstractExcelView
и реализуете свою собственную логику для рендеринга электронной таблицы на основе значений модели:
public class MyExcelView extends AbstractExcelView { ... }
и объявите его как bean:
<bean id = "myExcelView" class = "MyExcelView" />
Затем объявление BeanNameViewResolver
делает его доступным для контроллеров: когда контроллер возвращает ModelAndView
с именем вида myExcelView
, ваша таблица будет отображаться.
BeanNameViewResolver
обычно используется в сочетании с каким-либо другим видомным резольвером, который обрабатывает "обычные" представления (так что если BeanNameViewResolver
не может найти представление, другой распознаватель пытается его найти):
<bean class = "...BeanNameViewResolver">
<property name = "order" value = "0" />
</bean>
<bean class = "...InternalResourceViewResolver">
<property name = "order" value = "1" />
...
</bean>