Come descritto nella documentazione, BeanNameViewResolver
risolve View
s dichiarati come bean. Di solito ne hai bisogno per alcune viste speciali.
Immaginate, per esempio, che uno dei vostri controller debba rendere un foglio di calcolo Excel. Quindi, si sottoclasse AbstractExcelView
e l'implementazione della logica personalizzata per rendere un foglio di calcolo basato sui valori del modello:
public class MyExcelView extends AbstractExcelView { ... }
e dichiararlo come un fagiolo:
<bean id = "myExcelView" class = "MyExcelView" />
Poi dichiara un BeanNameViewResolver
mette a disposizione dei controllori: quando il controller restituisce ModelAndView
con il nome della vista myExcelView
, il foglio di calcolo verrà visualizzato.
BeanNameViewResolver
di solito è usato in congiunzione con qualche altro vista resolver che gestisce vista "regolari" (in modo che se BeanNameViewResolver
non riesce a trovare una vista, l'altra resolver cerca di trovarlo):
<bean class = "...BeanNameViewResolver">
<property name = "order" value = "0" />
</bean>
<bean class = "...InternalResourceViewResolver">
<property name = "order" value = "1" />
...
</bean>
+1 per essere più veloce di me e avere alcuni dettagli che il mio blob non ha :) –
+1 per una buona spiegazione. Un paio di domande: 1) beannameviewresolver deve essere thread-safe? 2) è internalresourceviewresolver thread-safe? – shrini1000
spiegazione molto buona – Krishna