Il existe de nombreuses façons d'obtenir des beans au Spring. Pour résumer encore :
La première : sauvegarder l'objet ApplicationContext lors de l'initialisation
ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml"); ac.getBean("beanId");
Remarque : cette méthode convient à ceux qui utilisent le. Le framework Spring. Les applications autonomes nécessitent que le programme initialise manuellement Spring via le fichier de configuration.
Deuxièmement : Obtenez l'objet ApplicationContext via la classe d'outils fournie par Spring
import org.springframework.web.context.support.WebApplicationContextUtils; ApplicationContext ac1 = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc); ApplicationContext ac2 = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc); ac1.getBean("beanId"); ac2.getBean("beanId");
Explication :
1 Ces deux méthodes conviennent aux systèmes B/S utilisant le framework Spring, via le ServletContext. object Obtenez l'objet ApplicationContext, puis utilisez-le pour obtenir l'instance de classe requise ;
2 La première méthode lève une exception lorsque l'acquisition échoue et la deuxième méthode renvoie null.
Troisième méthode : Hérité de la classe abstraite ApplicationObjectSupport
Description : Grâce à la méthode getApplicationContext() fournie par la classe abstraite ApplicationObjectSupport, vous pouvez facilement obtenir l'instance ApplicationContext puis obtenir les beans dans le conteneur Spring. Lorsque Spring est initialisé, l'objet ApplicationContext sera injecté via la méthode setApplicationContext (ApplicationContext context) de la classe abstraite.
Quatrième méthode : héritée de la classe abstraite WebApplicationObjectSupport
Explication : similaire à la méthode ci-dessus, obtenez l'instance WebApplicationContext en appelant getWebApplicationContext();
Cinquième méthode : implémentez l'interface ApplicationContextAware
Personnalisez d'abord une classe qui implémente l'interface ApplicationContextAware et implémentez les méthodes à l'intérieur :
package com.ghj.tool; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; public class SpringConfigTool implements ApplicationContextAware {// extends ApplicationObjectSupport{ private static ApplicationContext ac = null; private static SpringConfigTool springConfigTool = null; public synchronized static SpringConfigTool init() { if (springConfigTool == null) { springConfigTool = new SpringConfigTool(); } return springConfigTool; } public void setApplicationContext(ApplicationContext applicationContext)throws BeansException { ac = applicationContext; } public synchronized static Object getBean(String beanName) { return ac.getBean(beanName); } }
<bean id="SpringConfigTool" class="com.ghj.tool.SpringConfigTool"/>
SpringConfigTool.getBean("beanId");
import org.springframework.web.context.ContextLoader; import org.springframework.web.context.WebApplicationContext; WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext(); wac.getBean(beanID);