gpt4 book ai didi

java - 如何获取 Web 应用程序的上下文实例。语境?

转载 作者:行者123 更新时间:2023-12-02 09:37:30 25 4
gpt4 key购买 nike

我不知道如何获取网络应用程序 ctx。 Spring Web 应用程序中的实例。对于例如我们通常进行这样的配置:

@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
...
}

我知道 ApplicationContextAware,我之前已经实现过它。问题是它的实现是为了获取应用程序上下文,而不是特定的 Web 应用程序上下文。对于例如:

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;
}
}

后来在处理程序/ Controller 类中,我使用 smtg 获得了它,如下所示:

MrBean tb = ApplicationContextProvider.getApplicationContext().getBean("MrBean", MrBean.class);

在此示例中,上下文不是 Web 应用程序。上下文而不是全局应用程序。上下文(不是专门的网络上下文)。我需要您帮助检索 Web 上下文实例,因为我需要激活一些已从配置中配置的分析 bean。提前致谢。

最佳答案

如果您有 HttpServletRequest 对象,您可以通过 RequestContextUtils#findWebApplicationContext() 检索 WebApplicationContext

Look for the WebApplicationContext associated with the DispatcherServlet that has initiated request processing, and for the global context if none was found associated with the current request. The global context will be found via the ServletContext or via ContextLoader's current context.

NOTE: This variant requires Servlet 3.0+ and is generally recommended for forward-looking custom user code.

例如

WebApplicationContext webApplicationContext = RequestContextUtils.findWebApplicationContext(request);

但这仅适用于 spring mvc/webflow 上下文,因为 Spring DispatcherServlet 确保 WebApplicationContext 实例在当前运行的线程中可用。

关于java - 如何获取 Web 应用程序的上下文实例。语境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57378931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com