1、@Repository的作用
@Repository是屬于Spring的注解。它用來標注訪問層的類(Dao層),它表示一個倉庫,主要用于封裝對于數(shù)據(jù)庫的訪問。其實現(xiàn)方式與@Component注解相同,只是為了明確類的作用而設(shè)立。
即@Repository是@Component注解的一個派生品,與@Service和@Controller都可以理解為@Component注解的擴展。他們的作用都是在類上實例化bean,并把當(dāng)前類對象的實現(xiàn)類交給spring容器進行管理。
換句話說,@Repository注解修飾哪個類表明這個類具有對數(shù)據(jù)庫CRUD的功能,用在持久層的接口上。
另外,作為spring的注解,他還能把所標注的類中拋出的數(shù)據(jù)訪問異常封裝為spring的數(shù)據(jù)訪問異常類型。
2、@Repository與@Service和@Component有什么區(qū)別?
@Repository作用如上所說。
@Service注解用來標注服務(wù)層中的類,用于處理業(yè)務(wù)邏輯。在使用@Service注解標記的類中,通常會注入@Reposity的類。
@Component注解是通用的注解,用來標記所有被spring容器管理的組件。在使用@Component注解標記的類中,通常會注入@Service和@Repository標記的類。
本質(zhì)上都是把實例化對象交給spring管理。
3、@Repository和@Mapper的異同
@Mapper是屬于mybatis的注解。在程序中,mybatis需要找到對應(yīng)的mapper,在編譯時候動態(tài)生成代理類,實現(xiàn)數(shù)據(jù)庫查詢功能。
@Mapper和@Repository注解的使用方式一樣,都是在持久層的接口上添加注解。
但是如果只是單獨的使用@Mapper注解的話,在idea中進行自動裝配的時候,會出現(xiàn)警告,提示找不到這個bean。但是這個不影響程序運行,可以直接忽略。
想要不出現(xiàn)這個警告,可以在idea設(shè)置中對這種警告進行忽略,也可以在使用@Mapper的地方同時使用
@Repository注解。這樣spring會掃描@Repository并識別這個bean,就不會出現(xiàn)這個警告。
正常情況下的使用,我們都是使用@Mapper居多,而不使用@Repository注解。
不使用@Repository注解,而實現(xiàn)注入這個接口的實現(xiàn)類主要有以下3種方法:
1、在spring的配置文件中,配置了MapperScannerConfigure這個bean,他會掃描持久層接口創(chuàng)建實現(xiàn)類交給spring來管理。
2、接口使用@Mapper注解。
3、springboot的啟動類上使用@MapperScan注解,和MapperScannerConfigure的作用一樣。
4、正確的單獨使用@Repository
@Repository注解是用于標記數(shù)據(jù)訪問層的組件的注解,它會被spring掃描并注入到ioc容器中。即使沒有使用@MapperScan注解或MapperScannerConfigurer,只要@Repository注解標記的組件與Mybatis的mapper接口實現(xiàn)相同,它也可以生效。
但是,在mybatis中使用@Repository注解可能會有一些問題。當(dāng)使用@Repository注解時,spring會將其視為spring的組件,即為該類創(chuàng)建一個代理對象并在ioc容器進行管理。但是,mybatis中的mapper接口實現(xiàn)并不是spring的組件,他們是由mybatis創(chuàng)建的代理對象。使用@Repository注解可能會導(dǎo)致mybatis創(chuàng)建的代理對象被spring重新創(chuàng)建代理,進而出現(xiàn)問題。
因此,建議在mybatis中使用@MapperScan注解或者MapperScannerConfigurer來掃描mapper接口實現(xiàn),并將他們注入到ioc容器中,而不是使用@Repository注解。文章來源:http://www.zghlxwxcb.cn/news/detail-451807.html
5、總結(jié):
1、@Repository是spring的注解,@Mapper是mybatis的注解。
2、@Repository與@Mapper都可以使用,二者可以同時出現(xiàn),也可以單一使用。
3、單獨使用@Repository,需要配合使用MapperScannerConfigurer或者@MapperScan注解。
4、單獨使用@Mapper時,可能會在編輯器出現(xiàn)警告,不影響程序運行??梢耘浜鲜褂聾Repository消除警告。(也可以在編輯器中設(shè)置忽略這種警告)文章來源地址http://www.zghlxwxcb.cn/news/detail-451807.html
到了這里,關(guān)于@Repository注解的作用和用法,以及和@Mapper的區(qū)別的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!