2

我尝试使用从 web 应用程序中的 java 类加载 applicationContext.xml

  ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

ApplicationContext context = new FileSystemXmlApplicationContext("applicationContext.xml");

我的问题是如何从 java 类加载 applicationContext.xml。applicationContext.xml 是 WEB-INF。那可能吗?

4

2 回答 2

7

您可以ContextLoaderListenerweb.xml文件中使用:

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param> 

<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

然后您可以使用WebApplicationContext加载上下文:

WebApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext(servlet.getServletContext());

希望这可以帮助。

于 2013-10-10T10:32:00.980 回答
2

ContextLoaderListener当您想要加载将作为您的上下文根的特定上下文时使用A。如果您出于某种原因想要加载额外的上下文,您可以定义自己的ServletContextListener,创建您的ApplicationContext实例,并将它们放入ServletContext属性中,以便它们可用于 Web 应用程序

public class AdditionalContextListener implements ServletContextListener {

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        // destroy those contexts maybe
    }

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        ApplicationContext context = ...; // get your context
        sce.getServletContext().setAttribute("someContextIdentifier", context);
    }

}
于 2013-10-10T12:41:26.430 回答