當(dāng)前位置:首頁 > IT技術(shù) > 編程語言 > 正文

項(xiàng)目啟動(dòng)報(bào)錯(cuò)怎么辦?看看你Spring自動(dòng)注入用對了嘛?@Autowired XxxService注入問題解決
2022-01-01 23:12:32

問題

  • Controller層使用 @Autowired注入Service時(shí),提示Bean中沒有Service
  • Service接口中使用 @Component注入后,啟動(dòng)項(xiàng)目問題提示:
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:
    • 因?yàn)闆]有將Service注入到Spring容器中,可以通過 @Component或者 @Service注解注入
  • 在Service中使用注解注入到容器后,啟動(dòng)項(xiàng)目會(huì)報(bào)錯(cuò):
    • 因?yàn)樵?strong>Service接口注入,同時(shí)注入了兩個(gè)Bean
    • 在Service接口注入,會(huì)將實(shí)現(xiàn)Service接口的子類也注入到容器中,所以會(huì)導(dǎo)致Dubbo重復(fù)性線程錯(cuò)誤

解決辦法

  • Service的實(shí)現(xiàn)類ServiceImpl上,使用 @Component或者 @Service注解將Service注入到Spring容器中
  • 如果是使用Dubbo的SpringBoot項(xiàng)目,可以在Service實(shí)現(xiàn)類使用如下注解
@com.alibaba.dubbo.config.annotation.Service
@org.springframework.stereotype.Service
  • 注意: 要將Service實(shí)現(xiàn)類注入到容器,而不是Service接口

總結(jié)

  • Spring容器注入規(guī)則

本文摘自 :https://www.cnblogs.com/

開通會(huì)員,享受整站包年服務(wù)立即開通 >