1、Web工程:
1)ContextLoaderListener.getCurrentWebApplicationContext ().getBean ("beanName");
2)使用servletContext来获取ApplicationContext
ApplicationContext ac1 = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc);
ApplicationContext ac2 = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc);
这两中方式的区别在于前者在获取失败时会抛出异常,而后者在获取失败时会返回null
3)自己写一个listener实现ServletContextListener接口
web.xml中配置好listener
<listener>
<listener-class>com.ibatis.jpetstore.util.SpringInit</listener-class>
</listener>
listener实现类
public class SpringInit implements ServletContextListener {
private static WebApplicationContext springContext;
public SpringInit() {
super();
}
public void contextInitialized(ServletContextEvent event) {
springContext = WebApplicationContextUtils.getWebApplicationContext(event.getServletContext());
}
public void contextDestroyed(ServletContextEvent event) {
}
public static ApplicationContext getApplicationContext() {
return springContext;
}
}
2、普通Java工程:
1)写一个类实现ApplicationContextAware接口
/**
*
*/
public class ApplicationContextUtil implements ApplicationContextAware
{
private static ApplicationContext context;//声明一个静态变量保存
@SuppressWarnings ("static-access")
@Override
public void setApplicationContext (ApplicationContext context) throws BeansException
{
this.context = context;
}
public static ApplicationContext getContext(){
return context;
}
}
2)在Spring的配置文件中加入:<bean id="applicationContextUtil" class="net.carefx.platform.mdm.server.core.utils.ApplicationContextUtil" />