本文内容大多基于官方文档和网上前辈经验总结,经过个人实践加以整理积累,仅供参考。
1 配置方式
(1) 基于 XML 文件的方式
(2) 基于注解的方式
2 Bean 的配置
(1) 通过全类名(基于反射的机制)
(2) 通过工厂方法(静态工厂 & 实例工厂)
(3) FactoryBean
3 IOC 容器 BeanFactory & ApplicationContext 概述
在 Spring IOC 容器读取 bean 配置创建 bean 实例之前,必须对它进行实例化,只有容器实例化后才可以从 IOC 容器里获取 bean 实例并使用。
Spring提供两种类型的 IOC 容器实现:
(1) BeanFactory:IOC 容器的基本实现,是 Spring 框架的基础设施,面向 Spring 本身
(2) ApplicationContext:提供更多高级特性,是 BeanFactory 的子接口,面向使用 Spring 框架的开发者,几乎所有的应用场合都直接使用 ApplicationContext 而非底层的 BeanFactory
4 ApplicationContext 的主要实现类:
(1) ClassPathXmlApplicationContext:从类路径下加载配置文件
(2) FileSystemXmlApplicationContext:从文件系统中加载配置文件
(3) ConfigurableApplicationContext,扩展于 ApplicationContext,新增加两个主要方法:refresh() 和 close(),让 ApplicationContext 具有启动、刷新和关闭上下文的能力
ApplicationContext 在初始化上下文时就实例化所有单例的 bean
WebApplicationContext 是专门为 WEB 应用准备的,允许从相对于 WEB 根目录的路径中完成初始化。
5 依赖注入的方式
(1) 属性注入
属性注入即通过 setter 方法注入 bean 的属性值或依赖的对象
属性注入使用 元素,使用 name 属性指定 bean 的属性名称,value 属性或 子节点指定属性值
属性注入是实际应用中最常用的注入方式
(2) 构造器注入
通过构造方法注入 bean 的属性值或依赖的对象,保证了 bean 实例化后就可以使用
构造器注入在 元素里声明属性, 元素里没有name属性
(3) 工厂方法注入(很少使用)
6 通过类型获取 IOC 容器中的 bean
7 构造器注入实例
(1) 指定参数位置
(2) 指定参数类型
(3) 指定参数顺序和类型
(4) 编写测试用例
运行测试结果: