gpt4 book ai didi

java - 无法从 src/main/resources 加载dispatcher-servlet.xml

转载 作者:行者123 更新时间:2023-11-30 07:32:03 25 4
gpt4 key购买 nike

我的 spring mvc web 应用程序具有以下结构(Maven 项目):

src
- main
-- java
-- webapp
--- WEB-INF
--- web.xml
--- mvc-dispatcher-servlet.xml

然后我决定编写单元测试(junit)。在一篇文章中,我读到我应该将 mvc-dispatcher-servlet.xml 移至 src/main/resources,以便我可以在测试中的 ContextConfiguration 注释中访问它:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/mvc-dispatcher-servlet.xml")
public class UserDaoTest {

@Autowired
private UserDao userDao;

@Test
public void testGetUserByUsername() throws Exception {
User admin = userDao.getUserByUsername("admin");
Assert.assertNotNull(admin);
}
}

效果很好,我的单元测试运行成功。我启动了我的应用程序服务器来实现更多功能,但我遇到了异常。我发现,将 mvc-dispatcher-servlet.xml 从 WEB-INF 移动到 src/main/resources 后,我忘记在 web.xml 中进行以下更改:

<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<!-- changed from /WEB-INF/mvc-dispatcher-servlet.xml -->
<param-value>classpath:mvc-dispatcher-servlet.xml</param-value>
</context-param>

但我仍然遇到以下异常:

org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/mvc-dispatcher-servlet.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/mvc-dispatcher-servlet.xml]

我做错了什么?

最佳答案

请考虑这个可能的解决方案来解决您的问题。不幸的是,我无法断定您的方式出了什么问题,但该解决方案应该有效。

将 contextConfigLocation 的描述从 context-param 标记移动到 servlet 标记内的 init-param 标记,如下所示:

<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- changed from /WEB-INF/mvc-dispatcher-servlet.xml -->
<param-value>classpath:mvc-dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>

关于java - 无法从 src/main/resources 加载dispatcher-servlet.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35970453/

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