Spring 学习笔记之配置 Bean
一、在 Spring 的 IOC 容器中配置 Bean
可以通过 Spring 的 XML 配置文件来配置 Bean,例如:
1 | <!-- 配置Bean --> |
其中:
- id 属性定义了 Bean 的名字,也作为该 Bean 在 Spring 容器中的引用;
- class 属性定义了该 Bean 的类型
注意:
- id 属性在 IOC 容器中是唯一的
- 若 id 没有指定,Spring 自动将类名作为 Bean 的名字
- id 可以指定多个名字,名字之间可用逗号、分号、空格分隔
二、Spring 容器
在 Spring IOC 容器读取 Bean 配置并创建 Bean 实例之前,必须对它进行实例化。只有容器实例化之后,才可以从 IOC 容器中获取 Bean 实例并使用。 Spring 提供了两种类型的 IOC 容器实现,无论使用哪种方式,配置文件时完全相同:
- BeanFactory:IOC 容器的基本(底层)实现。BeanFactory 是 Spring 框架的基础设施,面向 Spring 本身;
- ApplicationContext:提供了更多的高级特性,是 BeanFactory 的子接口。ApplicationContext 面向使用 Spring 框架的开发者,几乎所有的应用场合都直接使用 ApplicationContext 而非底层的 BeanFactory。
三、ApplicationContext
ApplicationContext 有两个主要的实现类:
- ClassPathXmlApplicationContext:从类路径下加载配置文件
- FileSystemXmlApplicationContext:从文件系统中加载配置文件
ConfigurableApplicationContext 是 ApplicationContext 的子接口,增加了 refresh ()、close () 等方法,让 ApplicationContext 具有了启动、刷新、关闭上下文的能力。
注意:
- ApplicationContext 在初始化上下文时就会实例化所有的单例 Bean,及其 scope(作用域)属性为 singleton 的 Bean。
- WebApplicationContext 是专门为 Web 应用而准备的,它允许从相对于 Web 根目录的路径中完成初始化工作。
四、依赖注入
Spring 支持 3 种依赖注入的方式,分别是:
- 属性注入(Setter 注入)
- 构造器注入
- 工厂方法注入
1、属性注入
1 | <bean id="helloWorld" class="cn.javacodes.spring.beans.HelloWorld"> |
- 属性注入即通过 setter 方法注入 Bean 的属性值或依赖的对象;
- 属性注入使用
元素,使用 name 指定 Bean 的属性名称,value 属性或 子节点指定属性值,使用 ref 属性指定依赖的对象; - 属性注入是最常用的注入方式;
2、构造方法注入
通过构造方法注入 Bean 的属性值或依赖的对象,它保证了 Bean 在实例化后就可以使用。 构造器注入在
1 | <!-- 构造器注入-通过索引 --> |
(2)按类型匹配入参
1 | <!-- 构造器注入-通过类型 --> |
3、工厂方法注入
有时候静态工厂方法是实例化对象的唯一方法。Spring 支持通过
1 | package cn.javacodes.spring.beans; |
我们注意到该类只有一个 private 的构造方法,而并未提供公开的构造方法,因此在 Spring 中不能直接通过之前所述的方式来获得该类的 bean 对象。为了解决这个问题,Spirng 的
1 | <!-- 静态工厂方法注入--> |
相关文章