这个报错是因为自动引入失败导致的,就是使用了@Autowired,但是没有找到对应的声明。导致这个问题的原因如下:
1、首先查看springmvc.xml配置文件是否对注解文件配置了对应的包扫描(一般是controller和service包,如果其他包使用的注释也要配置进去);
<!-- 配置包扫描 -->
<context:component-scan base-package="com.sun.controller.*, com.sun.service.impl, com.sun.tasks" />
这里对包的层次一定要清楚,比如上面代码后两包是固定的,第一个包则使用了*,表示泛指这种命名方式的包。
2、查看@Service注解是否拼写正确;
3、查看是否有低级错误,比如serviceImpl implements mapper等这种容易忽略的错误。
最后提示一定要详细查看报错日志,它会详细告诉你报错原因,例如多个autowire失败,可能就是配置包扫描错误,只有一个autowire失败,可能是上面的二三条原因。写代码一定要细心,避免低级失误导致花非常多的时间查找bug。