报错信息:
Error creating bean with name 'atUserAction': Unsatisfied dependency expressed through field 'atUserService';
nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type
'cn.overloard.service.AtUserService' available: expected at least 1 bean which qualifies as autowire candidate.
Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
这个错误是说bean注入失败,我们可以按容器初始化顺序去找。
1、先看web.xml。这里有个监听器有没有配置,特别是classpath:这个参数一定要检查是不是和配置文件名称匹配。
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-*.xml</param-value>
</context-param>
2、检查applicationContext.xml和springMVC.xml文件。一般项目里是用包扫描的方式注入,那就检查
扫描的包路径有没有错。
applicationContext.xml
<context:component-scan base-package="cn.overloard">
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan>
springMVC.xml
<!--SpringMVC的配置文件,包含网站跳转逻辑的控制,配置 -->
<context:component-scan base-package="cn.overloard" use-default-filters="false">
<!--只扫描控制器。 -->
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
3、检查类中有没有忘记写注解
一般包括这些 @Controller、@Service、@Repository、@Component 注解中的一个
如:
@Service
public class AtUserServiceImpl implements AtUserService{}
@Controller
public class AtUserAction {}
4、如果你是通过xml方式配置的bean。就需要检查id和class是否正确。
<bean id="persion" class="cn.overloard.utils.Persion"/>