如果出现:
Error creating bean with name 'xxxx': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field:xxxx
个人理解 出现这种情况: 以下都是个人心酸史
1.首先查看pom依赖是否正确,由于微服务的特性,需要将其他模块也引入,
但是请注意!!!:由于依赖的特性,例如dao层的:加载配置文件
<context:property-placeholder location="classpath*:properties/*.properties" />
其他依赖dao层的模块玩玩不能再次加载,否则很难注意到!!
2.查看web.xml
(1).监听器,就不必说了,每个web.xml必须有,也是个开始的标志
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
3.查看spring的配置文件:applicationContext*.xml
(1).dubbo服务:
<dubbo:protocol name="dubbo" port="20885"></dubbo:protocol>
<!--应用名必须与你创建的模块名,文件名一致-->
<dubbo:application name="xxx-xxx"/>
<!--linux端口有时候会变,清注意-->
<dubbo:registry address="zookeeper://192.168.188.133:2181"/>
<!--报名一致肯定不用说了-->
<dubbo:annotation package="cn.itcase.xxx.service.impl" />
(2)加载spring容器:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring/applicationContext_service.xml</param-value>
</context-param>
但是请注意,由于依赖,也许不止需要加载一处spring配置文件
建议改为:applicationContext*.xml,这个也是个大坑,不注意很容易翻车
(3).注意创建bean注入的是属性还是引用:
拿到上面注入的id用ref,定义的参数用value例如:用户名,密码
4.就是每个controller与service层的注解了,
com.alibaba.dubbo.config.annotation.Reference;
com.alibaba.dubbo.config.annotation.Service;
本地的用:Autowired
org.springframework.beans.factory.annotation.Autowired;
5.外部原因:例如进程中你的javaTM开了两个,就会报注册失败,只要打开进程关掉一个世界清静
以上都个人所犯错误,坑较多,欢迎大家补充与纠正