Mybatis整合spring,主要通過兩種途徑:一種是基于xml配置的,一種基于java config 配置。
河南網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)公司2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
一種是基于xml配置的。這種方式通過解析xml,生成bean。主要是通過擴(kuò)展spirng?NamespaceHandlerSupport類型來實(shí)現(xiàn)自定義解析Mybatis的xml配置。Mybatis相關(guān)實(shí)現(xiàn)主要提現(xiàn)的類NamespaceHandler、MapperScannerBeanDefinitionParser。
一種基于java config 配置。這種方式通過注解MapperScan,讓spring容器掃描到注解。Mybatis相關(guān)實(shí)現(xiàn)主要體現(xiàn)的類:注解@interface??MapperScan、MapperScannerRegistrar。
????????這兩種方法的實(shí)現(xiàn)都是通過Mybatis的ClassPathMapperScanner類向容器中注冊bean的。
????????那這個ClassPathMapperScanner掃描到Mybatis的mapper接口,是如何注冊實(shí)例的呢,接口又怎么會實(shí)例呢。關(guān)鍵代碼處
?
1 2 3 4 | ??//?the?mapper?interface?is?the?original?class?of?the?bean ????????//?but,?the?actual?class?of?the?bean?is?MapperFactoryBean ????????definition.getPropertyValues().add("mapperInterface",?definition.getBeanClassName()); ????????definition.setBeanClass(MapperFactoryBean.class); |
? ??其實(shí)是通過更改注冊容器中bean的beanClass屬性為MapperFactoryBean(工廠bean)生成實(shí)例的。容易中注冊的bean其實(shí)是工廠bean,spring中的工廠bean獲得實(shí)例是調(diào)用工廠方法獲得。
MapperFactoryBean的功能是:
/**
?* BeanFactory that enables injection of MyBatis mapper interfaces. It can be set up with a
?* SqlSessionFactory or a pre-configured SqlSessionTemplate.
看一下這個spring工廠bean生成實(shí)例的最主要代碼:?
?
1 2 3 | public?T?getObject()?throws?Exception?{ ????return?getSqlSession().getMapper(this.mapperInterface); ??} |
?生成實(shí)例的時(shí)候,通過這個函數(shù)整合到了mybatis操作數(shù)據(jù)庫的接口。
剩下的那就是mybatis操作數(shù)據(jù)庫了。
文章標(biāo)題:spring,mybatis源碼深度解析
鏈接分享:http://jinyejixie.com/article0/gcehoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、營銷型網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、搜索引擎優(yōu)化、小程序開發(fā)、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)