今天用springboot寫多模塊項目,寫完第一個Controller類,注入的Service接口是ok的,然后寫第二個Controller類就一直報錯。這把我給搞懵逼了,為什么我第一個Controller沒錯,第二個錯了,我代碼都一樣的啊。
我看他說沒掃描到,就去看了下@Service注解,有啊。然后我再去看包名,也對的啊。多模塊下面每個模塊的包名都一樣的,能夠被@SpringBootApplication掃描到啊,徹底蒙圈了。
看來看去我都沒找到哪里錯了,好吧,1個半小時過去了,我自己找不到,去百度去問人。這是越來越蒙圈(百度要不是說包名要一樣,要不就是說@SpirngBootApplication掃描同級及下層所有子包,我都知道啊,概念清楚,也沒錯,包名我又再對了一遍。然后再就是手動掃描,自己額外寫注解,無論是@ComponentScan和@SpirngBootApplication("xx")我都試了,中間倒是掌握了個小知識——手動用注解掃描的話,記得還要手動把@SpringBootApplication注解所在的類的所在包一起掃進去)。
3個小時了,我徹底放棄了。准備重來一次,重新上git拉了個模板,把自己的代碼文件一個一個拉過去,(以前出現過一次兩個項目代碼完全一樣的,就是一個對了,一個出問題,現在懷疑是當時導入的maven依賴有沖突,一個運氣好莫名其妙對了,一個運氣差)拉着拉着我就 發現剛才好像有個文件沒有@Service啊,額。再一看,好吧,還真沒有,把@Service寫到接口上去了,Impl實現類上沒有@Service,額。無語,只能恨自己眼瞎,看包名看了一遍又一遍就是沒看@Serivce到底放在什么位置。
總結一下:老老實實跟着IDEA的報錯去找,這要是老老實實從service類開始開,細心一點,三個小時就不會浪費了。(也是自己技能沒掌握扎實,我估計是當時犯渾,沒搞清@Service放接口和放實現類上的差距)
過了1個多星期了,這幾天復習了spring,spring可以管理部分工具類,但是不可以管理接口,也就是@Controller,@Component,@Repository,@Service不能放接口上。