我使用的是SpringSource suit 2.9.2,是Spring MVC领域的新手。我正在尝试使用以下代码获取Application Context的保留对象:
ApplicationContext context = new ClassPathXmlApplicationContext("root-context.xml");
UsersDaoImpl usersDao = context.getBean("usersDaoImpl", UsersDaoImpl.class);
Users user = usersDao.getUsers(name);
return user;并且它返回给我FileNotFoundException异常。对于ex,我也尝试了不同的方法。spring/root-context.xml等,但似乎什么都不起作用。这是一个堆栈跟踪:
java.io.FileNotFoundException: class path resource [root-context.xml] cannot be opened because it does not exist
org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:158)
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:328)
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:243)
org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127)
org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93)
org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131)
org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:522)
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:436)
org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
com.varundroid.demos.HomeController.testingDatabase(HomeController.java:65)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:212)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

任何帮助都将不胜感激。
谢谢。
发布于 2012-07-04 16:41:12
这里的主要问题是,为什么需要在web应用程序中创建新的应用程序上下文,而不是使用现有的应用程序上下文。
据我所知,在您的设置中,应该在web.xml中声明ContextLoaderListener和DispatcherServlet。如果是这样,您需要访问由这些类加载的上下文,而不是创建新的上下文。
如果你想在Spring bean中访问ApplicationContext,你可以使用ApplicationContextAware或者自动装配。如果您想在Spring bean之外(例如,在Servlet或Filter中)执行此操作,则可以使用WebApplicationContextUtils。
更新:
在这种情况下,您不需要访问ApplicationContext。如果您想将一个Spring bean (DAO)注入另一个(控制器),您可以使用自动装配:
@Autowired
private UserDao userDao;还要注意,如果UserDaoImpl是实现UserDao接口的类,则在声明依赖项时最好使用接口。
发布于 2012-07-04 16:06:37
Spring很可能在你的类路径中找不到它。
将该文件放在/src/main/resources下(如您的图像所示)。
PS :这是我的常规做法,到目前为止从未失败过。
参考图片,这里我的上下文文件是application-web-context.xml

https://stackoverflow.com/questions/11324538
复制相似问题