Le printemps est une inversion légère de contrôle (CIO) et du cadre de conteneurs orienté tangent (AOP). Comment obtenir des haricots configurés par le printemps dans un programme?
Bean Factory (com.springframework.beans.factory.beanfactory) est l'interface centrale du cadre de printemps. Il fournit un mécanisme de configuration IOC avancé. BeanFactory permet de gérer différents types d'objets Java. Le contexte d'application (com.springframework.context.ApplicationContext) est basé sur BeanFactory et fournit des fonctions plus orientées vers l'application. Il fournit un système de support international et d'événements de cadre, ce qui facilite la création d'applications pratiques. Nous appelons généralement BeanFactory un conteneur IOC et applicationContext un contexte d'application. Mais parfois, dans le but d'écrire la commodité, nous appelons également ApplicationContext Spring Container.
Aux fins des deux, nous pouvons simplement les diviser: Beanfactory est l'infrastructure du cadre du printemps, destiné au printemps lui-même; ApplicationContext est destiné aux développeurs qui utilisent le framework Spring. Dans presque toutes les occasions d'application, nous utilisons directement ApplicationContext au lieu du beanfactory sous-jacent.
Il existe une différence significative entre l'initialisation d'ApplicationContext et BeanFactory: lorsque le beanfactory initialise le conteneur, il n'instanance pas le bean tant que le bean cible n'est accessible pour la première fois; tandis que ApplicationContext instancie tous les fèves d'instance unique lors de l'initialisation du contexte d'application. Par conséquent, le temps d'initialisation d'ApplicationContext sera légèrement plus long que celui de Beanfactory
Cet article n'implique pas d'injection automatique via @Resource et @Autowired, et obtient uniquement des beans dans le fichier de configuration de Spring via ApplicationContext.
Pour faire configurer le bean dans XML, la chose la plus importante est d'obtenir org.springframework.context.applicationContex
La première méthode pour obtenir ApplicationContext:
import org.springframework.context.applicationContext; import org.springframework.context.support.filesystemXmlapplicationContext; applicationcontext applicationContext = new FileSystemXmlApplicationContext ("applicationContext.xml");ou
import org.springframework.context.applicationContext; import org.springframework.context.support.classpathxmlapplicationContext; application privée applicationcontext = new classpathxmlapplicationContext ("applicationContext.xml");Instanciation ApplicationContext de cette manière prend beaucoup de temps. Cette façon convient aux applications autonomes à l'aide du framework Spring. Il n'est recommandé d'utiliser que lorsque le programme doit initialiser manuellement le ressort via des fichiers de configuration. Les principales classes d'implémentation d'ApplicationContext sont ClassPathxMlApplicationContext et FileSystemXmlApplicationContext. Le premier charge les fichiers de configuration du chemin de classe par défaut, et le dernier charge les fichiers de configuration du système de fichiers par défaut.
exemple:
public class beanManager {private static applicationContext context = new ClassPathXmlApplicationContext ("AppContext.xml"); objet statique public getBean (string beanId) {return context.getBean (beanId);}}Écrivez un servlet dans web.xml, démarrez automatiquement et appelez BeanManager dans la méthode init
init () lève ServletException {BeanManager BM = new BeanManager (); // Facultatif, de sorte que Spring charge la configuration du bean lorsque l'application Web est démarrée. // Sinon, il sera chargé lorsque le BeanManager est appelé pour la première fois, affectant la vitesse une fois. }Utilisez BeanManager.getBean (String BeanID); Dans Java Code pour obtenir une instance de bean.
La deuxième méthode pour obtenir ApplicationContext: Obtenez un objet ApplicationContext via la classe d'outils fournie par Spring. Il s'agit d'une méthode spécialement personnalisée pour les projets Web. Il est recommandé de l'utiliser dans des projets Web. Par exemple:
ServletContext servletContext = request.getSession (). GetServletContext (); applicationContext AC1 = webApplicationContextUtils .getRequiredWebApplicationContex
Obtenez l'objet d'instance ApplicationContext via javax.servlet.servletContext, ce qui signifie que la demande, la session, etc. doivent être utilisées.
De cette manière, l'objet ApplicationContext ne peut pas être défini en tant que variable membre. Dans chaque méthode spécifique, vous devez obtenir le servletContext via la demande, la session, etc., puis obtenir l'instance ApplicationContext.
Par conséquent, cette méthode n'est recommandée que dans un cas où vous pouvez obtenir l'objet ServletContext et vous n'avez pas besoin de définir l'objet ApplicationContext en tant que variable membre.
Remarque: Lorsque vous utilisez WebApplicationContextUtils pour obtenir l'instance ApplicationContext, vous devez ajouter l'écouteur org.springframework.web.context.contextLoaderListener dans le fichier de configuration web.xml, sinon l'objet ApplicationContext ne peut pas être obtenu et Null est renvoyé.
Fichier de configuration: web.xml
<! - ContextLoaderListener injecte automatiquement ApplicationContex Am-Name> <Am param-value> /web-inf/spring/appcontext.xml ,/web-inf/spring/appinterceptor.xml </ param-value> </ context-param> <ouciner> <ouciner-class> org.springframework.web.context.contedLeterListener </diner-lass> </ écouteur>
3. Hérité de la classe abstraite ApplicationObjectSupport
La classe abstraite ApplicationObjectSupport fournit la méthode GetApplicationContext (), qui peut facilement obtenir l'applicationContext. Lorsque Spring est initialisé, l'objet ApplicationContext sera injecté via la méthode setApplicationContext (ApplicationContext Context) de la classe abstraite.
4. Hérité de la classe abstraite WebApplicationObjectSupport
Utilisez getWebApplicationContext () pour obtenir org.springframework.web.context.webapplicationContext, car les applications Web ont plus de fonctionnalités que les applications ordinaires, WebApplicationContext étend ApplicationContext. WebApplicationContext définit une racine constante_web_application_ context_attribute. Lorsque le contexte est démarré, l'instance WebApplicationContext est placée dans la liste d'attributs de ServletContext avec cette clé. Par conséquent, nous pouvons obtenir directement le WebApplicationContext à partir du conteneur Web via l'instruction suivante:
WebApplicationContext wac = (webApplicationContext) servletContext.getAttribute (webApplicationContext.root_web_application_context_attribute);
5. Implémentez l'interface ApplicationContextAware
Implémentez la méthode setApplicationContext (ApplicationContext Context) de cette interface et enregistrez l'objet ApplicationContext. Lorsque le printemps est initialisé, l'objet ApplicationContext est injecté via cette méthode.
Les troisième, quatrième et cinquième méthodes nécessitent toutes la configuration de la classe dans le fichier de configuration de ressort:
<! - En supposant qu'ApplicationContextTool est une classe d'implémentation spécifique qui hérite ou implémente les troisième, quatrième et cinquième méthodes -> <an Bean> </EAND>
Sinon, l'applicationContext ne sera pas récupéré et Null sera renvoyé.
Le contenu ci-dessus présente un résumé de la méthode de Spring Bean en Java, j'espère que vous l'aimez.