从与classpath不同的位置加载spring XML

时间:2013-11-12 22:46:29

标签: java spring java-ee

我正在尝试使用ClassPathXmlApplicationContext类读取spring xml,如下所示。

    ApplicationContext context = new ClassPathXmlApplicationContext("file:../WebContent/WEB-INF/dispatcher-servlet.xml");
    Service service = (Service ) context.getBean("service");

但我收到FileNotFound异常。 dispatcher-servlet.xml位于WebContent / WEB-INF / dispatcher-servlet.xml下。如果我将文件移动到Src文件夹,它可以正常工作。

我尝试过不同的方式,比如

    ApplicationContext context = new ClassPathXmlApplicationContext("classpath:../WebContent/WEB-INF/dispatcher-servlet.xml");

 ApplicationContext context = new ClassPathXmlApplicationContext("/WEB-INF/dispatcher-servlet.xml");

但这些都行不通。有人可以提供一些意见吗。

2 个答案:

答案 0 :(得分:1)

来自Spring documentation

ApplicationContext ctx = new FileSystemXmlApplicationContext("conf/appContext.xml");

答案 1 :(得分:0)

在你的web.xml中试试这个:

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>WEB-INF/dispatcher-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

如果您需要在代码中执行此操作,请使用ServletContextResource。请参阅here