Spring3

Spring-第三章

 

还原web项目的到Shop_SM

1. 新建web项目 Shop_SM

2. 复制Shop资源和相关代码,实现注册功能

3. 集成MyBatis ,跑通功能

 

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

1. MyBatis的主配置文件mybatis-config.xml  工具类MyBatisUtil

2. Mapper文件

3. Dao接口

4. Service接口

5. Service实现

6. 测试端

 

Spring集成MyBatis+MyBatisUtil

 

 

步骤

1. 添加Spring,MyBatis相关jar包 共计24个

参见共享,\Jars\Shop_SM

 

2. 复制applicationContext.xml,部分命名空间

 

 

3. 测试一个UserService例子

 

 

 

替代mybatis-config.xml 主配置文件的功能

使用Spring来集成该功能,Spring的IOC来替MyBatis生成工厂的特殊对象

 

创建数据连接,即数据源 取代标签组

 

创建工厂 取代标签组和MyBatisUtil 工具类

 

加载JDBC的配置文件 独立配置文件

 

修改为动态参数

 

测试打印 SqlSessionFactory

 

完成MyBatis对象的引入

 

版本1:IOC创建,管理Dao,Service 层

使用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. 将该包下所有的接口类名,改为 标准的对象引用命名(驼峰命名)

3. 通过自动装配byType,实现自动注入SqlSession对象

4. spring 容器中拥有这些 标准的对象引用名,可以直接被引用

5. 底层实现:SqlSession的MapperProxy代理实现

 

Service层的 自动装配

开启注解扫描,扫描Service的接口层

 

Service实现类标注注解

 

@Autowired 底层实现: 反射+无参构造方法

Service自动装配Dao对象,默认按照id自动装配productDao

 

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

 

Spring的专属Junit

 

 

总结:

1. Dao层的对象创建的底层实现,是MyBatis框架下的SqlSession对象,依靠MapperProxy动态代理技术实现 byName

2. Service层的对象创建的底层实现,是由注解@Service发起,依赖Spring-IOC 的bean-type来创建。再底层细致,就是反射+无参构造方法 byType

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测试所有业务逻辑层代码

 

posted @ 2023-01-12 22:05  月丫湾  阅读(39)  评论(0)    收藏  举报