原文地址是:http://blog.csdn.net/gaohuanjie/article/details/50895862。
获取bean的方法有五种,分别是:
(1) 第一种:在初始化时保存ApplicationContext对象
ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");
ac.getBean("beanId");
(2) 通过Spring提供的工具类获取ApplicationContext对象
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");
第一种方式在获取失败时抛出异常,第二种方式返回null。
(3) 继承自抽象类ApplicationObjectSupport
通过抽象类ApplicationObjectSupport提供的getApplicationContext()方法可以方便的获取到ApplicationContext实例,进而获取Spring容器中的bean。Spring初始化时,会通过该抽象类的setApplicationContext(ApplicationContextcontext)方法将ApplicationContext对象注入。
(4) 继承自抽象类WebApplicationObjectSuppo
(5) 实现接口ApplicationContextAware
说明:实现该接口的setApplicationContext(ApplicationContextcontext)方法,并保存ApplicationContext对象。Spring初始化时,会通过该方法将ApplicationContext对象注入。
public class SpringConfigTool implementsApplicationContextAware {// extends ApplicationObjectSupport{
privatestatic ApplicationContext ac = null;
privatestatic SpringConfigTool springConfigTool = null;
publicsynchronized static SpringConfigTool init() {
if(springConfigTool == null) {
springConfigTool= new SpringConfigTool();
}
returnspringConfigTool;
}
publicvoid setApplicationContext(ApplicationContext applicationContext)throwsBeansException {
ac= applicationContext;
}
publicsynchronized static Object getBean(String beanName) {
returnac.getBean(beanName);
}
}
其次在applicationContext.xml文件进行配置:
<bean id="SpringConfigTool"class="com.ghj.tool.SpringConfigTool"/>
最后通过如下代码就可以获取到Spring容器中相应的bean了:
SpringConfigTool.getBean("beanId");