一,首先:@repository是用來注解接口,如下圖:這個注解是將接口BookMapper的一個實現類(具體這個實現類的name叫什么,還需要再分析源碼找找看)交給spring管理(在spring中有開啟對@repository注解的掃描),當哪些地方需要用到這個實現類作為依賴時,就可以注入了.當然我們也可以主動給這個實現類命名,如下圖


二,為什么有時候我們不用@repository來注解接口,我們照樣可以注入到這個接口的實現類呢?如下圖,下圖是在接口沒有用
@repository注解的情況下,依然可以實現注入它的實現類.

上面是在idea中報了紅線警告,說找不到這個實現類,但依然是可以運行,沒有問題(只是單純的警告),而在myeclipse中,是連警告都沒有的,運行完全沒問題.這是因為如下圖:
是因為我們在mybatis的xml文件配置了上圖這個bean,它會去將dao這個層中的mapper(也就是我們的接口)都生成實現類,然后交給spring管理(因為mybatis.xml文件我們最終還是導入了spring容器中),所以我們這里不對這些接口用@repository注解,也是一樣可以用它的實現類,(這也是我們寫項目時,有時感覺完全是沒用到@repository注解的原因,因為沒有什么必要)而idea報紅線警告,可能是idea自己的原因,這個在我們對它對應的接口用@repository注解后,紅線警告會消失,運行也完全沒問題
