一、背景:解耦
二、Factory概念
通过加载类来创建对象
- 创建谁,注册bean;装配,bean与bean之间的关系
- 如何创建, bean的构造方法
- 属性添加,依赖注入
三、Spring的IOC容器的创建
(一)读取配置文件,注册bean
- ClassPathXmlApplicationContext 加载类路径下的 Spring 配置文件
- FileSystemXmlApplicationContext 加载磁盘中任意路径下的 Spring 配置文件
- BeanFactory 加载类路径下的 Spring 配置文件,并创建 IOC 容器
(二)装配, 告诉容器Bean对象之间协作关系
- XML文件显示装配,bean.xml 告知factory 所需要创建的bean, 需要被加载进入IOC容器。
- Java代码显示装配,@Configuration注解和@Bean注解。java显示装配适用于[第三方库]的组件装配,在这个时候对于第三方库是不能加@Component注解的,其通常为打包好的class文件的集合体。@Configuration修饰的类需要加载进入IOC容器。
- 自己创建的bean,自动装配。通过组件扫描@ComponentScan,自动装配@component,@controller, @repository
四、Bean的概念和构造
(一)按照方法的分类
- 使用默认(无参)构造方法创建的对象, 可以和下面set属性注入一起使用
- 使用有参构造方法创建的对象,包含了属性的注入
- 使用普通工厂中的方法创建的对象
- 使用工厂中的静态方法创建的对象
(二)XML和注解方式
五、DI依赖注入
(一)按照方法的划分
-
构造函数的方式(索引,名称,类型)
-
set属性的方式 (二)按照实现的方式
-
XML方式
-
注解方式
(三)一般分为
- XML 手动注入 构造函数****
- XML 手动注入 set属性方法****
- XML 自动注入 构造函数. 在xml中的< bean >中使用autowire
- XML 自动注入 set属性方法.在xml中的< bean >中使用autowire
- 注解 手动注入 构造函数(无)
- 注解 手动注入 set属性方法(无)
- 注解 自动注入 构造函数(推荐)@Autowired*
- 注解 自动注入 set属性方法 (常用)@Autowired*
- 注解 自动注入 属性上 (常用)@Autowired*
六、JDBCTemplate
七、Transaction事务
- TransactinManager(需要定义),非单一操作: 开始,提交,回滚
- 过代理方式,通过为service层面配置代理对象,导致返回的是Service 的代理类对象
八、AOP切面编程
- 导入AOP包
- 基本概念,切面,切点,通知等
- AOP和Transaction的结合,简化编程
- Spring 中自带的事务管理 spring-tx(事务包), 支持声明式和编程式
XML配置和注解配置@Transactional
事务传播机制:方法 A 是一个事务的方法,方法 A 执行的时候调用了方法 B,此时方法 B 有无事务以及是否需要事务都会对方法 A 和方法 B 产生不同的影响