Unable to instantiate Action, com.pzy.action.ActionFile, defined for 'addPa' in namespace '/file'Error creating bean with name 'com.pzy.action.ActionFile': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.pzy.service.FileUpAndDownService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.annotation.Resource(shareable=true, lookup=, name=, description=, authenticationType=CONTAINER, type=class java.lang.Object, mappedName=)}
description The server encountered an internal error that prevented it from fulfilling this request.
exception
Unable to instantiate Action, com.pzy.action.ActionFile, defined for 'addPa' in namespace '/file'Error creating bean with name 'com.pzy.action.ActionFile': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.pzy.service.FileUpAndDownService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.annotation.Resource(shareable=true, lookup=, name=, description=, authenticationType=CONTAINER, type=class java.lang.Object, mappedName=)} - action - file:/G:/eclipse-jee-luna-SR2-win32-x86_64/apache-tomcat-7.0.54/myPerPage/WEB-INF/classes/struts/UADOperation.xml:9:81 com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:314) com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:395) com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:194) org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63) org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:37) com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58) org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:554) org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:81) org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
root cause
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.pzy.action.ActionFile': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.pzy.service.FileUpAndDownService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.annotation.Resource(shareable=true, lookup=, name=, description=, authenticationType=CONTAINER, type=class java.lang.Object, mappedName=)} org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:308) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1202) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBeanProperties(AbstractAutowireCapableBeanFactory.java:385) com.opensymphony.xwork2.spring.SpringObjectFactory.autoWireBean(SpringObjectFactory.java:218) com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:198) com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:164) com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:178) com.opensymphony.xwork2.factory.DefaultActionFactory.buildAction(DefaultActionFactory.java:22) com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:148) com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:295) com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:395) com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:194) org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63) org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:37) com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58) org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:554) org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:81) org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
root cause
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.pzy.service.FileUpAndDownService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.annotation.Resource(shareable=true, lookup=, name=, description=, authenticationType=CONTAINER, type=class java.lang.Object, mappedName=)} org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1308) org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1054) org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:949) org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:457) org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:435) org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:559) org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:169) org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:305) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1202) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBeanProperties(AbstractAutowireCapableBeanFactory.java:385) com.opensymphony.xwork2.spring.SpringObjectFactory.autoWireBean(SpringObjectFactory.java:218) com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:198) com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:164) com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:178) com.opensymphony.xwork2.factory.DefaultActionFactory.buildAction(DefaultActionFactory.java:22) com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:148) com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:295) com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:395) com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:194) org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63) org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:37) com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58) org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:554) org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:81)org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
出现这个问题表面上是struts2的问题,实际上是spring的问题。在spring.xml配置中没有把Service层的方法进行配置,所以我在上面加了
<bean id="PerInforService" class="com.pzy.service.imp.PerInforServiceImp"></bean> <bean id="PerNoticeService" class="com.pzy.service.imp.PerNoticeServiceImp"></bean> <bean id="ActionPerUser" class="com.pzy.service.imp.PerUserServiceImp"></bean> <bean id="RArticleService" class="com.pzy.service.imp.RArticleServiceImp"></bean> <bean id="RTypeService" class="com.pzy.service.imp.RTypeServiceImp"></bean> <bean id="UMenuService" class="com.pzy.service.imp.UMenuServiceImp"></bean> <bean id="UMessageService" class="com.pzy.service.imp.UMessageServiceImp"></bean> <bean id="FileUpAndDownService" class="com.pzy.service.imp.FileUpAndDownServiceImp"></bean> <bean id="BaseDao" class="com.pzy.dao.imp.BaseDaoImp"> <!-- <property name="sessionFactory" ref="sessionFactory"></property> --> </bean>
在 serviceimp 加上@Transactional和