目录
- Spring的创建
- 存储Bean对象
-
- [1. 创建Bean](#1. 创建Bean)
- 2.将Bean注册到容器当中
- 获取并使用Bean对象
-
- 1.得到Spring上下文
- [2. 获取指定Bean对象](#2. 获取指定Bean对象)
- [3. 使用Bean对象](#3. 使用Bean对象)
- 总结
Spring 是⼀个包含了众多⼯具⽅法的 IoC 容器。那么它就具备以下功能:
1.将对象存储到容器中
2 从容器中将对象取出来
Spring的创建
使⽤ Maven ⽅式来创建⼀个 Spring 项⽬,总共分为三步:
- 创建一个普通的Maven项目
- 添加Spring框架支持(spring-context、spring-beans)
- 添加启动类
1.创建一个普通的Maven项目
然后点击下面创建
2.添加spring框架支持
在项目的pom.xml中,添加spring框架支持,xml的配置如下:
java
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
<dependency>
上述添加的模块有spring-context :spring上下文 ,还有 spring-beans:管理对象模块
3.添加启动类
在创建好的项目中的java文件夹中创建一个启动类,包含main方法即可:
java
public class Test {
public static void main(String[] args) {
}
}
存储Bean对象
存储Bean对象分为以下两步:
- 创建Bean
- 将创建的Bean注册到Spring容器当中
1. 创建Bean
Bean就是Java中的一个普通对象,实现代码如下:
java
public class User {
public String sayHi(String name){
return name+"你好!";
}
}
2.将Bean注册到容器当中
在 resources 根⽬录下添加Spring配置文件spring-config.xml
Spring配置文件格式固定,所以找地方保存即可
配置文件gitee地址
java
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:content="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
</beans>
在<beans>
中添加如下配置,即可将User对象注册到Spring中去
java
<bean id="user" class="User"></bean>
获取并使用Bean对象
获取并使用Bean对象需要三步:
- 得到Spring上下文
- 通过Spring上下文,获取某一个指定的Bean对象
- 使用Bean对象
1.得到Spring上下文
Spring 上下⽂对象可使⽤ ApplicationContext得到,实现代码如下:
java
//获取spring上下文,创建的时候需要配置 Spring 配置信息
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");
也可以使用BeanFactory得到Spring上下文
java
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
两者效果是一样的,ApplicationContext是BeanFactory的子类
常见面试题
ApplicationContext与BeanFactory
1.继承关系和功能⽅⾯来说:Spring 容器有两个顶级的接⼝:BeanFactory 和ApplicationContext。其中 BeanFactory 提供了基础的访问容器的能⼒,⽽ ApplicationContext属于 BeanFactory 的⼦类,它除了继承了 BeanFactory 的所有功能之外,它还拥有独特的特性,还添加了对国际化⽀持、资源访问⽀持、以及事件传播等⽅⾯的⽀持
2.从性能⽅⾯来说:ApplicationContext 是⼀次性加载并初始化所有的 Bean 对象,⽽BeanFactory 是需要那个才去加载那个,因此更加轻量。
2. 获取指定Bean对象
java
//获取指定的Bean对象,使用名称获取
User user = (User) applicationContext.getBean("user");
//获取指定的Bean对象类型进行获取
User user = (User) applicationContext.getBean(User.class);
//获取指定的Bean对象名称+类型进行获取
User user = (User) applicationContext.getBean("user",User.class);
注意
当有⼀个类型被重复注册到 spring-config.xml 中时,只能使⽤根据名称获取。
3. 使用Bean对象
java
public class Test {
public static void main(String[] args) {
//获取spring上下文,创建的时候需要配置 Spring 配置信息
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");
//BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
//获取指定的Bean对象名称+类型进行获取
User user = (User) applicationContext.getBean("user",User.class);
//调用指定对象相应方法
System.out.println(user.sayHi("朱星星"));
}
}
运行main方法
总结
- 操作容器之前,需要先得到容器。
- 存对象
- 创建 Bean
- 将 Bean 注册(配置)到 spring-confing.xml 中
- 取对象
- 得到 Spring 上下⽂,并读取到 Spring 的配置⽂件
- 获取某⼀个 Bean 对象
- 使用Bean对象