javascript
【Spring】总结Spring整合Mybatis的底层原理实现步骤
(魯班學院公開課筆記)
Dao:數據訪問層,提供讓Service層調用的接口,更大的時候,Dao層可以是一個項目。
sqlSession.getMapper();使用的是JDK的動態代理
使用時
自定注入的條件:要被Spring管理。被Spring管理的對象叫做Bean
@Component注解:表示將生成一個Bean
對象和Bean的區別:
1、Bean就是一個Java對象,是Spring幫我們New出來的對象。
2、從Spring容器中拿到的對象,會給對象里面的包含@AutoWired注解的屬性進行自動注入賦值。而手動new出來的對象不會自動注入賦值。
Spring容器中的Bean是怎么產生的?
BeanFactory:是一個Bean工廠
手動將Bean添加進Spring中:
bd=new bd(); bd.setbeanClass(); spring.add(bd);類---->BeanDefinition---->Bean
MyBatis是如何注入Spring的?
MyBatis代理對象的類型是?接口,例如UserMapper。我們可以提供一個類,讓Spring自動去實例化
但是接口不能實例化,怎么辦?如果可以把一個Java對象手動放進Spring容器中,就好了。
將Java對象手動放進Spring容器中三種方式:
1. beanFactory.registerSingleton("userXX",new User()) 2. @Bean注解 3. 實現FactoryBean接口:FactoryBean是一個特殊的Bean FactoryBean和BeanFactory的理解 BeanFactory是Spring里的一個大工廠 FactoryBean是一個小工廠,可以自定義生成的對象
MyBatis是使用FactoryBean整合進Spring的。
打印對象的時候,調用的是toString方法,會調用到invoke()
改進:將類改成活的 Class,使用構造器傳入希望生成的Class
如果不使用@Component注解呢?
根據不同的Mapper生成不同的bd,從而生成不同的bean
手動實現
@import注解
可以用于導入一個本來不是Bean的類,將它生成一個Bean
@Bean明確地指示了一種方法,什么方法呢——產生一個bean的方法,并且交給Spring容器管理
測試示例:
總結
以上是生活随笔為你收集整理的【Spring】总结Spring整合Mybatis的底层原理实现步骤的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Java】什么是CAS、synchro
- 下一篇: JS 创建自定义对象的方法