前言:Spring Framework 系统架构
学习路线
- 核心容器:核心概念(IoC/DI)、容器基本操作
- 整合:整合数据层技术 MyBatis
- AOP:核心概念、AOP基础操作、AOP实用开发
- 事务:事务实用开发
一、核心容器
1.1 核心概念
IoC (Inversion of Control) 控制反转:
使用对象时,在程序中不要主动使用new产生对象,转换为由外部提供对象。(对数据层和业务实现层降低耦合度)
DI(Dependency Injection) 依赖注入:
在容器中建立bean与bean之间的依赖关系的整个过程,称为依赖注入
- Spring技术对IoC思想进行了实现
- Spring 提供了一个容器,称为Ioc容器,用来充当IoC思想中的“外部”。
- IoC容器负责对象的创建、初始化等一系列工作,被创建或管理的对象在IoC容器中统称为Bean。
1.2 IoC入门案例
1.3 bean基础配置
bean作用范围说明
为什么bean默认为单例?
适合交给容器进行管理的bean:表现层对象、业务层对象、数据层对象、工具对象。
不适合交给容器进行管理的bean:封装实体的域对象。
1.4 bean实例化
bean的本质是对象,可使用构造方法实例化。
- 构造方法:提供可访问的构造方法
- 使用静态工厂实例化bean
- 实例工厂实例化bean
1.5 bean的生命周期
bean 生命周期
- 初始化容器
-
- 创建对象(内存分配)
-
- 执行构造方法
-
- 执行属性注入(set操作)
-
- 执行bean初始化方法
-
- 使用bean
- 执行业务操作
- 关闭/销毁容器
- 执行bean销毁操作
1.6 setter注入
向一个类中传递数据的方式有几种:普通方法(set方法)、构造方法
1.7 构造器注入
依赖注入方式选择
- 强制依赖使用构造器进行,使用setter注入有概率不进行注入导致null对象出现。
- 可选依赖使用setter注入进行,灵活性强。
- Spring框架倡导使用构造器,第三方框架内不大多数采用构造器注入的形式进行数据初始化,相对严谨。
- 如果有必要可以两者同时使用,使用构造器注入完成强制依赖的注入,使用setter注入完成可选依赖的注入。
- 实际开发过程中还要根据实际情况分析,如果受控对象没有提供setter方法就必须使用构造器注入。
- 自己开发的模块推荐使用setter注入。
1.8 依赖自动装配
IoC 容器根据bean所依赖的资源在容器中自动查找并注入到bean中的过程称为自动装配。
自动装配方式:
- 按类型(常用)
- 按名称
- 按构造方法
- 不启用自动装配
依赖自动装配特征
- 自动装配用于引用类型依赖注入,不能对简单类型进行操作
- 使用按类型装配时(byType)必须保障容器中相同类型的bean唯一,推荐使用
- 使用按名称装配时(byName)必须保障容器中具有指定名称的bean,因变量名与配置耦合,不推荐使用
- 自动装配优先级低于setter注入与构造器注入,同时出现时自动装配配置失效
1.9 案例:数据源对象管理
1.10 加载properties文件
1.11 容器
-
- 创建容器
- 创建容器
-
- 获取bean的方式
- 获取bean的方式
-
- 容器类层次结构图
- 容器类层次结构图
-
- BeanFactory初始化
- BeanFactory初始化
1.12 核心容器总结
-
- 容器相关
- 容器相关
-
- bean相关
- bean相关
-
- 依赖注入
- 依赖注入
二、注解
2.1 注解开发定义bean
2.2 纯注解开发
2.3 bean管理
-
- bean的作用范围
- bean的作用范围
-
- bean的生命周期
- bean的生命周期
2.4 依赖注入
2.5 第三方bean管理
不建议这种方式
改用
2.6 注解开发总结
三、AOP简介
3.1 AOP核心概念
3.2 AOP入门案例
3.3 AOP工作流程
- 目标对象(Target):原始功能去掉共性功能对应的类产生的对象,这种对象是无法直接完成最终工作的
- 代理(Proxy):目标对象无法直接完成工作,需要对其进行功能回填,通过原始对象的代理对象实现
3.4 AOP切入点表达式
3.5 AOP通知类型
3.6 AOP通知获取数据
四、Spring事务
4.1 Spring 事务简介
4.2 案例
4.3 Spring事务角色
4.4 Spring事务属性