Spring3-个人

Spring-第三章

还原web项目的Test_Shop到Test_Shop_SM
Spring集成MyBatis
在这里插入图片描述

步骤

  1. 添加Spring,MyBatis相关jar包
    参见共享,\Test_Shop_SM\jars

  2. 复制applicationContext.xml,修改部分命名空间
    在这里插入图片描述

  3. 测试一个ProductService例子
    在这里插入图片描述

在这里插入图片描述

回顾当前配置下的加载顺序

  1. MyBatis的主配置文件mybatis-config.xml 和 工具类MyBatisUtil
  2. Mapper文件
  3. Dao接口
  4. Service接口
  5. Service实现
  6. 测试端

替代mybatis-config.xml 主配置文件的功能
使用Spring来集成该功能,Spring的IOC来替MyBatis生成工厂的特殊对象

创建数据连接,即数据源 取代在这里插入图片描述
标签组
在这里插入图片描述

创建工厂在这里插入图片描述
取代 标签组和MyBatisUtil 工具类
在这里插入图片描述

加载JDBC的配置文件 独立配置文件
在这里插入图片描述

修改为动态参数
在这里插入图片描述

测试打印 SqlSessionFactory
在这里插入图片描述

完成MyBatis对象的引入

版本1:
使用Spring IOC 创建dao对象,同时注入sqlSession配置
在这里插入图片描述

使用Spring IOC 创建service对象,并持有dao对象的引用
在这里插入图片描述

service层的实现类,持有dao对象的引用,并创建对应的set和get方法
在这里插入图片描述

完成ProductService的查询例子

  1. 检查原 MyBatisUtil工具类,依靠代理创建的对象
  2. 对比Spring IOC创建的对象
  3. 两者类型一致,说明Spring IOC创建的dao 对象
    底层实现:SqlSession的MapperProxy代理实现
  4. Spring-IOC 创建的sqlSessionFactory对象,会自动完成事务的提交和流的关闭

移除mybatis-config.xml 配置文件,MyBatisUtil工具类,及相关配置

版本2:
dao层的动态代理
在这里插入图片描述

1. 特殊类MapperScannerConfigurer根据value值,找到接口的包
2. 将该包下所有的接口类名,改为 标准的对象引用命名(驼峰命名)
  1. 通过自动装配byType,实现自动注入SqlSession对象
    1. spring 容器中拥有这些 标准的对象引用名,可以直接被引用
    2. 底层实现:SqlSession的MapperProxy代理实现

Service层的自动装配
开启注解扫描,扫描Service的接口层
在这里插入图片描述

Service实现类标注注解
在这里插入图片描述

Service自动装配Dao对象,默认按照类型自动装配productDao
在这里插入图片描述

不再需要productService的bean标签和set/get方法了

Spring的专属Junit

在这里插入图片描述

总结:
1. Dao层的对象创建的底层实现,是MyBatis框架下的SqlSession对象,依靠MapperProxy动态代理技术实现
2. Service层的对象创建的底层实现,是依赖Spring-IOC 的bean-id来创建,不管是显示bean,还是自动装配。再底层细致,就是反射+无参构造方法
3. 层与层之间都必须有需要有Spring bean 的定义(不管是显示定义,还是隐藏定义)
4. 类与类之间的依赖 :
原始是通过在配置文件里写明ref实现;
升级后,靠注释自动装配@Autowired实现,但是底层还是靠ref实现
5. Spring的发展是代码和配置文件越来越简洁,通用代码被隐藏,但功能越来越强;
就像是社会的发展,原始是手工劳作,现在是机器自动化。

集成web
web.xml添加监听,用来加载Spring的主配置文件

在这里插入图片描述

标准配置文件路径

  1. 将配置文件放入config文件夹 (日志配置文件保留在根目录)
  2. 修改web.xml的监听路径
  3. 修改applicationContext.xml的jdbc.properties路径
  4. 修改SpringJunit 的注解applicationContext.xml路径

Test_Shop升级Spring架构

  1. Spring集成MyBatis框架,删除mybatis-config.xml和MyBatisUtil.java
  2. 修改Tesh_Shop_SM的业务逻辑层
  3. 使用SpringJunit测试所有业务逻辑层代码

个人总结

1. Spring取代原M框架下的哪些功能?
mybatis-config.xml 主配置文件的功能,代替数据库的连接
MyBatisUtil 工厂的创建及加载
取代Dao层对象,自动进行装配
取代Service层对象,自动进行装配
取代原有junit,进行更新

2. Spring 如何集成MyBatis的工厂类
使用类org.mybatis.spring.SqlSessionFactoryBean
注入数据库源
加载Maaper文件
配置实体类
3. 什么是参数分离?
使用jdbc.properties
使其参数相对应${}
在这里插入图片描述

4. Spring 集成版本1的实现
在这里插入图片描述

5. Spring 集成版本2的实现
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6. Spring 集成web
在这里插入图片描述

7. 你对Spring框架的理解
1.Dao层的底层实现是通过sqlsession getMapper获得对象MapperProxy实现动态代理
2.Service的底层实现扫描包下带有@Service注解的类,通过扫描类反射保存到IOC的容器中,将依赖的bean进行注入 ,通过@Autowired进行自动装载
层与层之间进行封装,都交于spring进行维护与管理,
Spring越来越整洁,通用的逻辑都被隐藏,但是可维护性,和功能性更强。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值