文章目录
- 创建Spring项目
- 创建⼀个 Maven 项⽬
- 添加 Spring 框架⽀持
- 添加启动类
- 存储Bean对象
- 添加spring配置文件(第一次添加的时候)
- 创建Bean对象
- 将bean对象通过配置文件注册到spring中
- 从spring中读取bean并使用
- ApplicationContext VS BeanFactory
- ApplicationContext和BeanFactory有什么区别
- getBean ⽅法的更多⽤法
- 总结
Spring 就是⼀个包含了众多⼯具⽅法的 IoC 容器。既然是容器那么它 就具备两个最基本的功能:
- 将对象存储到容器(Spring)中;
- 从容器中将对象取出来。
在 Java 语⾔中对象也叫做 Bean,所以后⾯咱们再遇到对象就以 Bean 著称
创建Spring项目
接下来使⽤ Maven ⽅式来创建⼀个 Spring 项⽬,创建 Spring 项⽬和 Servlet 类似,总共分为以下 3 步:
- 创建⼀个普通 Maven 项⽬。
- 添加 Spring 框架⽀持(spring-context、spring-beans)。
- 添加启动类。
创建⼀个 Maven 项⽬
点击下⼀步:
添加 Spring 框架⽀持
在项⽬的 pom.xml 中添加 Spring 框架的⽀持,xml 配置如下:
<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>
从上述配置中可以看出,添加的框架有 spring-context:spring 上下⽂,还有 spring-beans:管理对 象的模块。
添加完毕之后,别忘记点击刷新按钮
添加启动类
最后在创建好的项⽬ java ⽂件夹下创建⼀个启动类,包含 main ⽅法即可
public class App {
public static void main(String[] args) {
System.out.println("hello Spring");
}
}
存储Bean对象
存储 Bean 分为以下 3(或2) 步:
- 如果是第一次添加,现在Spring项目中添加配置文件,非第一次此步骤可省略。
- 先要创建⼀个 Bean。
- 在配置文件中将需要保存到spring中的 Bean 对象进行注册
具体实现如下。
添加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>
创建Bean对象
将bean对象通过配置文件注册到spring中
在配置文件spring-config.xml的beans中,添加bean
从spring中读取bean并使用
读取操作分三步:
- 先得到spring的上下文对象(代表spring)
- 再通过上下文对象提供的方法获取咋们自己需要使用更多bean对象
- 可以使用bean对象
ApplicationContext VS BeanFactory
上图中,使用ApplicationContext得到spring上下文,但是这只是其中一种方法,我们还可以使用BeanFactory来得到spring的上下文
ApplicationContext和BeanFactory有什么区别
- 相同点:都可以实现从容其中获取bean,都提供了getBean方法
- 不同点:
- 继承关系:ApplicationContext属于BeanFactory的子类。BeanFactory只提供了基础访问bean的方法,ApplicableContext除了拥有BeanFactory所有的功能之后,还提供了更多的方法实现。比如了对国际化⽀持、 资源访问⽀持、以及事件传播等⽅⾯的⽀持。
- 性能方面:ApplicationContext 是⼀次性加载并初始化所有的 Bean 对象,⽽ BeanFactory 是需要那个才去加载那个,因此更加轻量。
getBean ⽅法的更多⽤法
- 使用 bean name 获取bean
- 根据bean type获取bean
写法简单,但容易出问题。
因为是根据类型获取对象,如果spring中只有一个类型对象的时候,毫无问题,但是如果注册时候一个对象注册多次就会出现问题
- 根据bean name 和bean type 获取bean
第一种,如果返回为null,同时强制类型转换,此时就会出现问题,第三中不会出现这样的问题,所以说,推荐使用第三种
总结
- 操作容器之前,先要有容器,所以先要得到容器。
- 存对象
- 创建 Bean(普通类)。
- 将 Bean 注册(配置)到 spring-confing.xml 中。
- 取对象
- 得到 Spring 上下⽂,并读取到 Spring 的配置⽂件。
- 获取某⼀个 Bean 对象。
- 使⽤ Bean 对象
操作流程如下图所示: