目 录
- 一.创建 Spring 项目
- 1.1 创建⼀个 Maven 项目
- 1.2 添加 Spring 框架依赖
- 1.3 手动创建启动类
- 二.将 Bean 对象存储到 Spring
- 2.1创建Bean对象
- 2.2将 Bean 存储到 Spring
- 三.获取并使用 Bean 对象
- 3.1 创建 Spring 上下文
- 3.2 获取指定的 Bean 对象
- 3.3 使用 Bean
- 四.总结
经过前面的学习我们已经知道了,Spring 就是⼀个包含了众多工具方法的 IoC 容器。既然是容器那么它就具备两个最基本的功能:
- 将对象存储到容器(Spring)中;
- 从容器中将对象取出来。
在 Java 语言中对象也叫做 Bean,所以后面再遇到对象就以 Bean 著称
一.创建 Spring 项目
接下来使用 Maven 方式来创建⼀个 Spring 项目,创建 Spring 项目和 Servlet 类似,总共分为以下 3步:
- 创建⼀个普通 Maven 项目。
- 添加 Spring 框架支持(spring-context、spring-beans)。
- 添加启动类。
1.1 创建⼀个 Maven 项目
1.2 添加 Spring 框架依赖
- spring-context: spring 上下文。
- spring-beans: spring 对象(bean)。
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
</dependencies>
注意:
在这里面我们可以看到,除了 context 包和 bean 包还有其他的依赖,那些都是他们俩依赖的包
1.3 手动创建启动类
二.将 Bean 对象存储到 Spring
存储 Bean 分为以下 2 步:
- 存储 Bean 之前,先得有 Bean 才行,因此先要创建⼀个 Bean。
- 将创建的 Bean 注册到 Spring 容器中。
具体实现如下
2.1创建Bean对象
2.2将 Bean 存储到 Spring
并不是真的存储,而是告诉 Spring,此 Bean 需要托管给 Spring
Spring 配置文件的固定格式为以下内容(以下内容无需记忆,只需要保存到自己可以找到的地方就可以了,因为它是固定不变的):
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
接下来,再将 User 对象注册到 Spring 中就可以,具体操作是在 中添加如下配置:
id:标识,取对象 (bean)使用
class:存储 bean 位置 (包名+类名)
此处广义上来说,可以认为对象已经存储进去了,因为 Spring 是一个懒加载,启动的时候并不会立即执行
三.获取并使用 Bean 对象
获取并使⽤ Bean 对象,分为以下 3 步:
- 得到 Spring 上下文对象,因为对象都交给 Spring 管理了,所以获取对象要从 Spring 中获取,那么就得先得到 Spring 的上下文。
- 通过 Spring 上下文,获取某⼀个指定的 Bean 对象。
- 使用 Bean 对象。
3.1 创建 Spring 上下文
Spring 上下⽂对象可使⽤ ApplicationContext,实现代码如下:
除了 ApplicationContext 之外,我们还可以使用 BeanFactory 来作为 Spring 的上下⽂,如下代码所示:
ApplicationContext VS BeanFactory(常见面试题)
共同点:
- 都是用来获取 Spring 上下文对象。
不同点:
-
- 继承关系和功能: ApplicationContext 属于 BeanFactory 子类,ApplicationContext 具备了 BeanFactory 所有的功能和能力。BeanFactory 只具备最基础访问 Bean 的能力。ApplicationContext 具备更多能力,比如国际化支持、资源访问支持等…
-
- 性能和加载方式: BeanFactory 按需加载,当需要使用 Bean 的时候再加载;ApplicationContext 一次性加载所有的 Bean。
3.2 获取指定的 Bean 对象
3.2.1根据名称(bean id)来获取 bean 对象
注意事项:此处的 bean id 要正确对应
3.2.2 根据一个 Class 参数获取 bean【根据类型来获取 bean 对象】
使用是需要注意一下,有可能出现异常(当同类型的对象被注册到 Spring 中多次时,此用法就会报错)
3.2.3 根据 String (bean id ) +Class 参数获取 bean
以上三种方法,第一种用到了类型强转,第二种当同类型的对象被注册多次就会报错,而第三种就结合了他们,比较常用
3.3 使用 Bean
四.总结
- 操作容器之前,先要有容器,所以先要得到容器。
- 存对象
a. 创建 Bean(普通类)。
b. 将 Bean 注册(配置)到 spring-confing.xml 中。 - 取对象
a. 得到 Spring 上下文,并读取到 Spring 的配置⽂件。
b. 获取某⼀个 Bean 对象。
c. 使用 Bean 对象。