3

我有一个Servlet类应该从服务中获取数据并将数据写回 servlet 响应。该类service已在 spring xml ( dispatcher-servlet.xml) 中声明。所以我想service class beandispatcher-servlet.xml.

我试过下面的代码

            ApplicationContext context = new FileSystemXmlApplicationContext("classpath:../WebContent/WEB-INF/dispatcher-servlet.xml");
        ServiceImpl serviceImpl = (ServiceImpl) context.getBean("service");

和下面的代码

            ServletContextResource res = new ServletContextResource(getServletContext(),"/WEB-INF/dispatcher-servlet.xml");
        ApplicationContext context = new FileSystemXmlApplicationContext("file:"+res.getURL()+"dispatcher-servlet.xml");
        ServiceImpl serviceImpl = (ServiceImpl) context.getBean("service");

但这些是扔的FileNotFoundException

如果我移动dispatcher-servlet.xmlsrc文件夹,它工作正常。但我不能移动它,因为 dispatcher-servlet.xml 已经在 WEB-INF 中存在很长时间了,许多其他类都在使用它。dispatcher-servlet.xml在 Web.xml 中正确声明,它可以正常加载和工作。

唯一的问题是我无法从 servlet 类的 java 代码中加载它。

dispatcher-xml 的位置是 /WebContent/WEB-INF/dispatcher-servlet.xml

非常感谢任何指针或解决方法。谢谢。

4

2 回答 2

2

WEB-INF被添加到类路径

你可以试试下面的代码

ApplicationContext context = new FileSystemXmlApplicationContext
              ("classpath:/../dispatcher-servlet.xml");

考虑阅读Sotirios Delimanolis建议的类路径是什么以及将 Web 应用程序的哪些部分添加到类路径中

于 2013-11-14T19:35:33.553 回答
0

在您的 servlet 代码中,您是否尝试过:

ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(getServletContext(),
"org.springframework.web.servlet.FrameworkServlet.CONTEXT.dispatcher");

您需要确保在 web.xml 中的调度程序 servlet 之后初始化您的 servlet(使用该load-on-startup元素)。

于 2013-11-13T21:58:51.833 回答