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