問題
- 在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接口注入,會將實現(xiàn)Service接口的子類也注入到容器中,所以會導致Dubbo重復性線程錯誤
解決辦法
- 在Service的實現(xiàn)類ServiceImpl上,使用 @Component或者 @Service注解將Service注入到Spring容器中
- 如果是使用Dubbo的SpringBoot項目,可以在Service實現(xiàn)類使用如下注解
@com.alibaba.dubbo.config.annotation.Service
@org.springframework.stereotype.Service
- 注意: 要將Service實現(xiàn)類注入到容器,而不是Service接口
總結
- Spring容器注入規(guī)則
本文摘自 :https://www.cnblogs.com/