知识回顾
第一部分:Spring概述(知道)
- Spring简介
- Spring是以IOC和AOP为内核的full-stack轻量级开源框架
- Spring发展历程
- Spring优势
- 解耦
- Aop编程支持
- 声明式事务
- 对测试的支持
- 方便集成各种优秀框架
- 对JavaEE API的封装
- 优秀的源码
- Spring核心结构
- 模块化思想的体现
- Spring框架版本
- 课程使用 5.1.12
第二部分:核心思想(理解)
- IOC 控制反转
- 什么是IoC
- 创建对象的权利反转给框架,不需要我们自己new对象了,我们丧失了创建对象的权利,但是也得到了福利,不需要我们来管理对象了
- IoC解决什么问题
- 解决对象之间耦合问题
- IOC和DI的区别
- 同一件事情不同角度的描述
- 什么是IoC
- AOP 面向切面编程
- 横切逻辑:多个纵向流程中出现的重复子流程逻辑
- 本质
- 在不改变原有业务逻辑代码的情况下,增强横切逻辑,避免横切逻辑代码重复
- 为什么叫面向切面编程
- 切:横切逻辑,原有业务逻辑不能动
- 面:横切代码影响的往往是很多方法,构成了一个面
第三部分:手写实现IOC和AOP(掌握)
- 分析案例,找出问题
- 针对问题提出解决方案
- 针对问题一
- 针对问题二
- 按照解决方案完成编码
- 1、ConnectionUtils提供了一个获取当前线程绑定Connection的方法
- 2、Service层事务管理逻辑代码单独提取为了事务管理器类TransactionManager(事务的开启、提交、回滚)
- 3、我们不可能给每一个方法添加TCF代码块来控制事务,所以使用动态代理技术,开发ProxyFactory
第四部分:SpringIOC的应用(掌握)
- 说明
- Bean定义方式不同、JavaSE/JavaEE环境不同,导致容器启动方式也会不同
- BeanFactory和ApplicationContext的区别
- Spring中IOC容器的顶级接口,定义基础规范;
- ApplicationContext是容器的高级接口,比BeanFactory拥有更多的功能(比如XML读取)
- IOC三种模式
- 模式一:纯XML模式
- 创建Bean的三种方式
- class指定全限定类名,通过无参构造器创建
- 静态方法创建
- 实例化方法创建
- Bean标签属性
- id
- class
- scope
- singleton
- prototype
- 生命周期属性
- init-method
- destory-method
- name
- factory-bean
- factory-method
- DI依赖注入
- 构造器注入
- 使用<constructor-arg>标签
- set注入
- 使用<property>标签,ref属性用于注入其它bean,value属性用于注入普通数值
- 构造器注入
- 创建Bean的三种方式
- 模式二:XML+注解模式
- 模式三:纯注解模式
- 原则:从xml开始,学习注解时将xml中标签、属性与注解一一对应即可
- 模式一:纯XML模式
- IOC高级特性
- lazy-init(了解)
- FactoryBean和BeanFactory(重点)
- FactoryBean是一个Bean,用于创建其他对象
- 后置处理器(重点)
- BeanPostProcessor,Bean对象后置处理器
- BeanFactoryPostProcessor,Bean工厂后置处理器
- BeanFactory初始化之后可以使用这个后置处理器做一些事情
- 其他
- SpringBean生命周期
- new的对象并不是一个Spring Bean对象
- BeanDefinition对象
- SpringBean生命周期
第五部分:Spring IOC源码深度剖析
- 源码剖析技巧
- 流程分析
第六部分:SpringAOP应用(掌握)
- AOP相关术语
- 连接点JoinPoint
- 每个个方法的特殊时机点都是连接点,是一种候选点
- 切入点PointCut
- 用于定位真正感兴趣的方法
- 增强Advice
- 横切逻辑+方位信息(具体哪种连接点)
- 目标对象Target
- 代理对象Proxy
- 织入Weaving
- 切面Aspect
- 切面=切入点+增强=切入点+横切逻辑+方位信息
- 注意:这么多的概念,目的就是为了锁定在哪个地方插入什么横切逻辑代码
- 连接点JoinPoint
- Spring AOP配置
- XML配置
- XML+注解
- 纯注解
- Spring 声明式事务
- 回顾事务基本知识
- 四大特性、并发问题、隔离级别、传播行为
- 配置方式
- xml配置
- xml+注解
- 纯注解
- 回顾事务基本知识
第七部分:Spring AOP源码剖析
- 代理对象创建流程
- 声明式事务控制组件分析--->从@EnableTransactionManagement开始