如何加载applicationContext.xml

时间:2013-10-10 09:20:50

标签: spring spring-mvc war

我尝试使用

从Web应用程序中的java类加载applicationContext.xml
  ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

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

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

2 个答案:

答案 0 :(得分:6)

您可以使用ContextLoaderListener文件中的web.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());

希望这有帮助。

答案 1 :(得分:2)

当您要加载将充当上下文根的特定上下文时,将使用ContextLoaderListener。如果您因任何原因要加载其他上下文,可以定义自己的ServletContextListener,创建ApplicationContext个实例,并将它们放在ServletContext属性中,以便它们可供网络使用申请

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

}