In termini di progettazione del sistema, qualsiasi contesto è una raccolta di funzionalità e dati comuni, definiti in un unico luogo, ma che devono essere utilizzati da qualsiasi punto del programma. E lo scopo principale di Context - ridurre il numero di dipendenze tra i componenti dell'applicazione. Un altro scopo di Context - semplificare l'accesso a funzionalità e dati comuni. Considera i contesti che hai elencato nella tua domanda.
ServletContext
ServletContext
fa parte della Servlet technology. Molti dei framework sono basati su questa tecnologia (JSF, Spring, Struts e molti altri). ServletContext
contiene funzionalità per comunicare con il suo contenitore Servlet (come Tomcat, Glassfish ecc.). Elementi di base che ServletContext
fornisce:
- ottenere l'applicazione Parametri iniziali;
- ottenere informazioni sulla richiesta di dispacciamento;
- aggiungere o rimuovere servlet, filtri e ascoltatori;
- ottenere o impostare gli attributi del contenitore;
- messaggi di runtime del registro;
- ricevere ulteriori informazioni come percorso di applicazione, la versione contenitore ecc
Come potete vedere c'è solo funzionalità di base, che può essere utile in qualsiasi applicazione, se si vuole lavorare con la tecnologia Servlet (ad esempio, sviluppare un altro un framework mvc basato su di esso).
ApplicationContext
ApplicationContext
è interfaccia principale Spring framework applicazione. Ha molte implementazioni. Uno di questi carica la configurazione dal file xml (ClassPathXmlApplicationContext), un altro carica la configurazione in base alle annotazioni (AnnotationConfigApplicationContext) e così via.Elementi di base che ApplicationContext
fornisce:
- bean factory, possibilità di creare nuovi bean in base alle definizioni bean;
- carico risorse da diverse fonti (file system, file jar, url ecc.);
- possibilità di pubblicare ed ascoltare eventi;
- risolve i messaggi dai pacchetti di messaggi;
Ancora una volta, inizializzato all'avvio, questa funzionalità di base può essere utile quasi ovunque nella vostra applicazione. Questo è il motivo per cui è stato raccolto nel contesto. Molte classi utilizzate in background, per fornire queste capacità, ma tutto quello che dovete sapere, per utilizzare questa funzionalità - solo ApplicationContext
.
SecurityContext
SecurityContext
fornisce l'accesso ai dati di autenticazione. È possibile ottenere il nome dell'utente autenticato, i ruoli e altri dettagli. Questa informazione inizializzata dal modulo di sicurezza potrebbe essere necessaria in molti posti. I componenti, che utilizzano questa informazione, non conoscono le classi del modulo di sicurezza. Ricevono tutte le informazioni necessarie da SecurityContext
.
fonte
2016-03-11 16:29:44
di diritto un'applicazione a molla basata sul Web anche eseguita sopra il servlet giusto? Quindi se dico contesto "root" -> contesto "servlet" -> contesto "molla" è corretto? – Harshana
Il contesto di root è il "contesto di base", quindi il contesto di Servlet eredita dal contesto radice, poiché è il bambino. Pensa in questo modo ... tu crei il contesto di root con tutto ciò di cui l'applicazione ha bisogno (servizi, ecc.), Ma il contesto servlet istanzia solo le "cose" di cui ha bisogno per essere servlet. Ricordare che è possibile avere più servlet per contenitore e che tutti possono condividere un "contesto di root application" questa è la chiave per capire come tutto ciò si adatta. – dkanejs
ok grazie. quando si tratta di servlet e spring contest, se dico che servlet context è il genitore del contesto primaverile o è una relazione tra fratelli? Anche la molla può accedere al contesto della servlet ma non viceversa? È corretto? – Harshana