前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Spring】总结Spring整合Mybatis的底层原理实现步骤[通俗易懂]

【Spring】总结Spring整合Mybatis的底层原理实现步骤[通俗易懂]

作者头像
全栈程序员站长
发布2022-08-30 18:15:34
3340
发布2022-08-30 18:15:34
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

(鲁班学院公开课笔记)

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中:

代码语言:javascript
复制
bd=new bd();
bd.setbeanClass();
spring.add(bd);

—->BeanDefinition—->Bean

MyBatis是如何注入Spring的? MyBatis代理对象的类型是?接口,例如UserMapper。我们可以提供一个类,让Spring自动去实例化 但是接口不能实例化,怎么办?如果可以把一个Java对象手动放进Spring容器中,就好了。

将Java对象手动放进Spring容器中三种方式:

代码语言:javascript
复制
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容器管理

测试示例:

在这里插入图片描述
在这里插入图片描述

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/145081.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档