Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取web应用程序的上下文实例。上下文_Java_Spring_Spring Mvc - Fatal编程技术网

Java 如何获取web应用程序的上下文实例。上下文

Java 如何获取web应用程序的上下文实例。上下文,java,spring,spring-mvc,Java,Spring,Spring Mvc,我不知道如何获得web应用程序ctx。SpringWeb应用程序中的实例。对于e.x.我们通常进行如下配置: @EnableWebMvc public class WebConfig extends WebMvcConfigurerAdapter { ... } 我知道ApplicationContextAware,我以前实现过它。问题是,它的实现是为了获取应用程序上下文,而不是具体的Web应用程序上下文。对于e.x: public class ApplicationContextProvid

我不知道如何获得web应用程序ctx。SpringWeb应用程序中的实例。对于e.x.我们通常进行如下配置:

@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
...
}
我知道ApplicationContextAware,我以前实现过它。问题是,它的实现是为了获取应用程序上下文,而不是具体的Web应用程序上下文。对于e.x:

public class ApplicationContextProvider implements ApplicationContextAware{
    private static ApplicationContext context;
    public static ApplicationContext getApplicationContext() {
        return context;
    }

    @Override
    public void setApplicationContext(ApplicationContext ac)
            throws BeansException {
        context = ac;
    }
}
后来在handler/controller类中,我使用smtg获得它,如下所示:

MrBean tb=ApplicationContextProvider.getApplicationContext().getBean(“MrBean”,MrBean.class)


在此e.x中,上下文不是web应用程序。上下文而不是全局应用程序。上下文(不是特定的web上下文)。我需要您帮助检索web上下文实例,因为我需要激活一些已从配置中配置的分析bean。提前感谢。

如果您有
HttpServletRequest
对象,您可以通过

查找与已启动请求处理的DispatcherServlet关联的WebApplicationContext,如果未找到与当前请求关联的全局上下文,则查找全局上下文。全局上下文将通过ServletContext或ContextLoader的当前上下文找到 注意:此变体需要Servlet 3.0+,通常建议用于前瞻性自定义用户代码

例如

但这只在SpringMVC/webflow上下文中起作用,因为SpringDispatcherServlet确保WebApplicationContext实例在当前运行的线程中可用

WebApplicationContext webApplicationContext = RequestContextUtils.findWebApplicationContext(request);