2011-01-20 15 views
5

Ho difficoltà a decidere quale "Open Session In View" utilizzare: configurazione di OpenSessionInViewInterceptor utilizzando l'intercettatore di Spring MVC con o la configurazione di OpenSessionInViewFilter nel filtro web.xml? Da quello che ho cercato, fanno praticamente la stessa cosa, ma sto cercando di capire la differenza e l'uso di ogni tipo.Quale utilizzare: OpenSessionInViewInterceptor o OpenSessionInViewFilter?

La più grande differenza tra i due è per le persone che non possono utilizzare un filtro in web.xml (ad esempio, servlet 2.2 e precedenti), la loro unica opzione è utilizzare OpenSessionInViewInterceptor. In qualche modo, mi sto appoggiando all'intercettore semplicemente perché devo creare un intercettore personalizzato per il mio progetto, quindi sto pensando di raggruppare tutti questi "filtri" nel file di configurazione MVC di Spring piuttosto che avere OpenSessionInViewFilter in web.xml e la mia abitudine intercettore nel file di configurazione MVC di Spring. È davvero un modo zoppo per decidere quale usare, e la mia curiosità mi uccide qui.

Qualcuno può condividere le tue opinioni su questo? Quale ragazzi usi?

Grazie.

risposta

8

Come dici tu, i due sono più o meno equivalenti. Spring offre entrambe le opzioni in modo che tu possa scegliere quello che si adatta meglio alla tua applicazione esistente.

Se si utilizza Spring MVC, allora ha senso utilizzare l'intercettore, dal momento che è più facile da configurare e meglio si integra con Spring MVC.

Tuttavia, se non si utilizza Spring MVC e si utilizza Spring solo a livello di business logic, l'intercettore non è realmente un'opzione e il filtro diventa più appropriato. Poiché i filtri non sono gestiti da Spring, è più difficile da configurare per l'integrazione con Spring, ma questo è il compromesso.

+0

Grazie. Credo che uno dei vantaggi dell'utilizzo dell'intercettatore sia la facilità di cablaggio dei bean Spring mentre non posso utilizzare quella caratteristica quando si utilizza un filtro. – limc

+0

Non risuscitare un vecchio post, ma se "usi solo Spring a livello di business logic", non avrebbe più senso usare "@ Transactional" e organizzare il tuo codice per lavorare con esso? Non sono polemico, semplicemente non capisco l'utilità di 'OSIVF' nelle applicazioni non MVC. – Andy

4

Se avete richieste che non passeranno attraverso un controller a molla, cioè un codice legacy che passa attraverso un servlet personalizzato, o jsp che vengono colpiti direttamente, il filtro coprirà quelli e assicurerà che vengano avvolti in una sessione. L'intercettore non coprirà quelli in quanto tali richieste non verranno rilevate dal DispatcherServlet di primavera.

+0

Punto eccellente. – limc

Problemi correlati