有個工程師,在項目工程里加了些頁面和Service,Dao之類,而後啓動web工程,Spring一直報錯說找不到autowired定義的service接口的實現bean的定義,而後來求助我來幫忙解決。web
我理所固然的按照常規步驟1,2,3...檢查他的代碼是否存在問題:spring
第一步,檢查service接口是否確實有實現類而且@Service標註了,這個是初學者讓出現問題,檢查結果確實沒問題Pass。tomcat
第二布,由於其service定義在新的package裏,遂檢查其spring配置裏,component-scan是否新增長了掃描package,檢查結果確實沒問題Pass。eclipse
第三步,懷疑Eclipse開發環境裏,運行tomcat的時候,沒有publish成功,確認workspace裏是自動build,而且clean & Rebuild,在clean tomcat server,問題依舊。ui
第四步,仍是懷疑Eclipse開發環境裏,運行tomcat的時候,沒有publish成功,遂檢查workspace的的.metadata/.plugins/org.eclipse.wst.server.core裏所發佈的內容,檢查結果確實class已經publish過去沒問題,Pass。spa
第五步,檢查Web工程裏的Deployment Assembly,配置正確沒問題,Pass。component
逐步檢查下來,常規的錯誤貌似都沒有犯,但怎麼clean,再啓動依然報錯,找到Service接口,Ctrl+T,確實找到實現類,而且@Service標註。問題查到這裏就有點奇怪了,這樣問題之前貌似沒碰到過。server
有問題不能不解決,繼續琢磨,Ctrl+G找Service全部引用,發現有兩個地方被使用@Autowared注入,而後,而後,而後,點其中一個引用的地方,Ctrl+T找其實現類,很神奇的發現,光標就跳到引用這個service的類自己上。OMG,Finally,原來該Service的實現Bean在引用自身Service,結果循環引用致使沒法實例化Bean而報出這個錯誤。對於一箇中高級工程師來講,犯這個錯誤,我只能一頓痛扁,掙一頓免費晚餐,你,是否也曾經犯過這個傻呢......
接口