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

【Spring】总结Spring整合Mybatis的底层原理实现步骤[通俗易懂]SpringMyBatisDao:数据访问层,提供让Service层调用的接口,更大的时候,Dao层可以是一个项目。sqlSession.getMapper();使用的是JDK的动态代理使用时自定注入的条件:要被Spring管理。被Spring管理的对象叫做Bean对象和Bean的区别:@Component注解表示将生成一个BeanBean就是一个Java对象,是Spring…

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

(鲁班学院公开课笔记)

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容器管理

测试示例:
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • idea2021.7激活码【永久激活】「建议收藏」

    (idea2021.7激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • 3.1存储管理操作系统

    3.1存储管理操作系统

  • VUE中diff比较

    VUE中diff比较

  • Keras中创建LSTM模型的步骤[通俗易懂]

    Keras中创建LSTM模型的步骤[通俗易懂]目录写在前面概述环境1、定义网络2、编译网络3、训练网络4、评估网络5、进行预测一个LSTM示例总结写在前面本文是对The5StepLife-CycleforLongShort-TermMemoryModelsinKeras的翻译,新手博主,边学边记,以便后续温习,或者对他人有所帮助概述深度学习神经网络在Python中很容易使用Keras创建和评估,但您必须遵循严格的模型生命周期。在这篇文章中,您将了解创建、训练和评估Keras中长期记忆(LSTM)循环神经网络的分步生

  • linux常用命令杀死进程_结束进程的命令

    linux常用命令杀死进程_结束进程的命令原文网址:简介法1:ps+grep等用法ps-ef|grepprocedure_name|grep-vgrep|awk'{print$2}’|xargskill-9procedure_name为进程名。分析ps-ef 列出所有进程 grepprocedure_name 查找指定进程名的进程 awk'{print$2}’ 筛选出进程的ID xargskill 杀死指定进程 法2:killall用法

  • Python append 函数[通俗易懂]

    Python append 函数[通俗易懂]pythonappend描述append函数可以在列表的末尾添加新的对象。函数无返回值,但是会修改列表。append语法list.append(object)名称 说明 备注list 待添加元素的列表 object 将要给列表中添加的对象 不可省略的参数append举例1.给列表中添加整数、浮点数和字符串:test=[‘Python’,‘C’,‘Java’]test.append(5)test.append(23.6)test.append(‘HTML’)print(t

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号