14. Mybatis 與Spring MVC的整合 ?

2021-08-24 10:40 更新

問題: Mybatis 與Spring MVC的整合 ?

Spring整合Mybatis底層原理實現(xiàn)步驟 1.首先Spring主要做對Bean的管理,包含bean的初始化等信息 spring內(nèi)部有一個BeanDefinition 有一系列對Bean的描述,包含單例/多例 beanName BeanClass等信息,也可以理解成 標簽所描述的信息 2.spring集成了Mybatis 那么也要管理mybatis相關聯(lián)的bean,我們經(jīng)常使用的通常是定義xxxMapper 的接口,想要接口被Spring管理必須需要對應類實例化,所以就需要的動態(tài)代理相關內(nèi)容,我們所知的已知接口可以使用JDK動態(tài)代理為mapper相關生成代理類,放入spring 容器種等待調(diào)用 然后就可以使用@Autowired xxxMapper獲取具體的實例 3.mybatis相關代理類生成的時機,已知spring的bean的流程 掃描指定包路徑下的Class文件,根據(jù)class信息生成對應的BeanDefinition 這里根據(jù)時機修改beanDefinition信息也就是為mapper生成代理類 根據(jù)BD生成bean實例,把實例放入spring容器中 4.spring處理的流程是 class-->組建beanDefinition->為mapper生成對應的BeanDefinition >BeanFactory 進行處理,-->beanFactory后續(xù)處理,-->實例化生成Bean實例放入spring容器中 至于如何生成bean就可以由FactoryBean去自定義生成我們需要的mapper的bean對象

正式環(huán)境使用中 1.使用@MapperScan注解放入需要掃描的mapper的接口包路徑 2.內(nèi)部使用@Import導入MapperScannerRegistrar.class 來實現(xiàn)生成代理Mapper類的步驟 3.實現(xiàn)registerBeanDefinition方法掃描@MapperScan注解拿到掃描路徑 4.調(diào)用spring類拿到BeanDefinition需要的所有的Mapper接口等待生成代理類 5.創(chuàng)建的definition設置構(gòu)造方法傳遞的是被代理類的Class及我們自己寫的Mapper接口,為definition設置beanClass為MapperFacotryBean.class(org.mybatis.spring.mapper.MapperFactoryBean)添加到spring容器中 6.在實例化bean實例的時候調(diào)用MapperFactoryBean 的getObject方法里面使用jdk動態(tài)代理生成對應的代理實例,供項目使用 至此 spring中整合myatis 并合理使用

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號