Configurazioni aggiuntive
Spring MVC si basa sul modello di sviluppo convention over configuration che prevede che per avviare una applicazione base siano necessarie poche configurazioni in quanto è preferibile utilizzare le convenzioni previste dagli sviluppatori. Questo ovviamente è valido per applicazioni standard, ma non può essere la regola.
La configurazione basata sulle convenzioni è banale ma è ovviamente possibile personalizzarla ulteriormente per adattarla alle esigenze e preferenze di ogni sviluppatore.
Per esempio utilizzando Maven è consigliato utilizzare la cartella resources
per tutti i file di configurazione dell'applicazione al posto della cartella WEB-INF. Grazie al parametro contextConfigLocation
è possibile differenziare il percorso del (o dei) file XML di configurazionedel contesto di Spring MVC:
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:META-INF/spring/*.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
In questo sempio ho creato una cartella ad hoc all'interno di META-INF dedicata alle configurazioni
di Spring MVC; inoltre utilizzando il meta carattere * possiamo differenziare i bean anche in diversi
file XML avendo la certezza che il framework li leggerà tutti.
Altri parametri di inizializzazione della servlet sono disponibili nella documentazione ufficiale.
WebApplicationContext
Per ciascuna servlet utilizzata viene istanziato un WebApplicationContext all'interno del quale vivono tutti i bean definiti. Questo contesto viene agganciato allo standard ServletContext in modo da essere recuperato facilmente.
All'interno di questo speciale contesto sono presenti alcuni bean che configurano in maniera particolare Spring MVC. Alcuni bean sono già presenti di default ma ovviamente si possono personalizzare sempre tenendo in mente la logica del convention over configuration.
I principali bean presenti nel WebApplicationContext sono:
Bean | Descrizione |
---|---|
HandlerMapping | Bean che si occupa di mappare le url invocate dal client verso un particolare metodo o classe; il bean di default utilizza le java annotations |
HandlerExceptionResolver | Bean che gestisce l'output al client in caso di eccezioni |
ViewResolver | Bean che si occupa di identificare quale view caricare sulla base del nome in formato stringa |
LocaleResolver | Bean che gestisce l'internazionalizzazione |
Per sovrascrivere questi bean basta includere nel contesto un nuovo bean dello stesso tipo che punti
ad una classe esterna: vedremo come nelle prossime lezioni, per il momento accontentiamoci dei
bean di default.