主要分为三种:
方法一:在初始化时保存ApplicationContext对象
<span style="font-size:18px;">ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");
ac.getBean("beanId");</span>
方法二:通过Spring提供的工具类获取ApplicationContext对象
<span style="font-size:18px;">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");</span>
说明:
这种方式适合于采用Spring框架的B/S系统,通过ServletContext对象获取ApplicationContext对象,然后在通过它获取需要的类实例。
上面两个工具方式的区别是,前者在获取失败时抛出异常,后者返回null。
方法三:实现接口ApplicationContextAware
public class SpringUtil implements ApplicationContextAware{
private static ApplicationContext ctx = null;
private static Logger logger = Logger.getRootLogger();
/**
* 设置当前上下文环境,此方法由spring自动装配
*/
public void setApplicationContext(ApplicationContext context)
throws BeansException {
ctx = context;
}
ApplicationContext.xml
<bean id="springUtil" class="com.cctest.utils.SpringUtil" />
说明:
实现该接口的setApplicationContext(ApplicationContext context)方法,并保存ApplicationContext 对象。
Spring初始化时,会通过该方法将ApplicationContext对象注入。