問(wèn)題
- 在Controller層使用 @Autowired注入Service時(shí),提示Bean中沒(méi)有Service
- 在Service接口中使用 @Component注入后,啟動(dòng)項(xiàng)目問(wèn)題提示:
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中沒(méi)有Service:
- 因?yàn)闆](méi)有將Service注入到Spring容器中,可以通過(guò) @Component或者 @Service注解注入
- 在Service中使用注解注入到容器后,啟動(dòng)項(xiàng)目會(huì)報(bào)錯(cuò):
- 因?yàn)樵?strong>Service接口注入,同時(shí)注入了兩個(gè)Bean
- 在Service接口注入,會(huì)將實(shí)現(xiàn)Service接口的子類(lèi)也注入到容器中,所以會(huì)導(dǎo)致Dubbo重復(fù)性線(xiàn)程錯(cuò)誤
解決辦法
- 在Service的實(shí)現(xiàn)類(lèi)ServiceImpl上,使用 @Component或者 @Service注解將Service注入到Spring容器中
- 如果是使用Dubbo的SpringBoot項(xiàng)目,可以在Service實(shí)現(xiàn)類(lèi)使用如下注解
@com.alibaba.dubbo.config.annotation.Service
@org.springframework.stereotype.Service
- 注意: 要將Service實(shí)現(xiàn)類(lèi)注入到容器,而不是Service接口
總結(jié)
- Spring容器注入規(guī)則
本文摘自 :https://www.cnblogs.com/