项目启动报错怎么办?看看你Spring自动注入用对了嘛?@Autowired XxxService注入问题解决

Posted 攻城狮Chova

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目启动报错怎么办?看看你Spring自动注入用对了嘛?@Autowired XxxService注入问题解决相关的知识,希望对你有一定的参考价值。

问题

  • Controller层使用 @Autowired注入Service时,提示Bean中没有Service
  • Service接口中使用 @Component注入后,启动项目问题提示:
The web application [ROOT] appears to have started a thread named [DubboClientReconnectTimer-thread-2] but has failed to stop it.
This is very likely to create a memory leak

原因

  • 提示Bean中没有Service:
    • 因为没有将Service注入到Spring容器中,可以通过 @Component或者 @Service注解注入
  • 在Service中使用注解注入到容器后,启动项目会报错:
    • 因为在Service接口注入,同时注入了两个Bean
    • 在Service接口注入,会将实现Service接口的子类也注入到容器中,所以会导致Dubbo重复性线程错误

解决办法

  • Service的实现类ServiceImpl上,使用 @Component或者 @Service注解将Service注入到Spring容器中
  • 如果是使用Dubbo的SpringBoot项目,可以在Service实现类使用如下注解
@com.alibaba.dubbo.config.annotation.Service
@org.springframework.stereotype.Service
  • 注意: 要将Service实现类注入到容器,而不是Service接口

总结

  • Spring容器注入规则

以上是关于项目启动报错怎么办?看看你Spring自动注入用对了嘛?@Autowired XxxService注入问题解决的主要内容,如果未能解决你的问题,请参考以下文章

myeclipse2015不支持spring-web-4.1.3.RELEASE.jar怎么回事,tomcat部署项目启动报错

spring再tomcat启动后,初始化完成后,自动执行一次某个类,怎么做

javaEE项目启动过程中Spring是怎么一步步执行的?

Spring 扫描注入

springMVC @autowired 注入失败

Intellij IDEA 2019 解决Spring自动注入报错的方法