一. 创建 Spring 项目
1. 创建一个普通 Maven 项目
2. 添加 Spring 框架支持 (spring-context, spring-beans)
3.添加启动类
1.1 创建一个 Maven 项目
1.2 添加 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:管理对象的模块
1.3 添加启动类(后面有更好的方法)
最后在创建好的项目 java 文件夹下创建一个启动类,包含 main 方法即可:
public class test1 {
public static void main(String[] args) {
}
}
二. 存储 Bean 对象
1. 创建一个 Bean
2. 将创建的 Bean 注册到 String 容器中
2.1 创建 Bean
所谓的 Bean 就是 Java 语言中的一个普通对象
public class test2 {
public String SayHi(){
return "hello";
}
}
2.2 将 Bean 注册到容器
在创建好的项目中添加 Spring 配置文件 Spring-config.xml,将此文件放到 resources 的根目录下
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 http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
</beans>
接下来,再将 User 对象注册到 Spring 中,具体操作是在<beans>中添加如下配置:
<beans>
<bean id="user" class="test2"></bean>
</beans>
三. 获取并使用 Bean 对象
1. 得到 Spring 上下文对象,因为对象都交给 Spring 管理了,而对象要从 Spring 中获取,因此就 得先得到 Spring 的上下文
2. 通过 Spring 上下文,获取某一个指定的 Bean 对象
3. 使用 Bean 对象
3.1 创建 Spring 上下文
3.1.1 使用 ApplicationContext 或 BeanFactory
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
BeanFactory context = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
ApplicationContext 和 BeanFactory 效果是一样的,ApplicationContext 属于 BeanFactory 的子类
3.1.2 ApplicationContext 和 BeanFactory的区别(面试题)
1)从继承关系和功能方面来说:
ApplicationContext 属于 BeanFactory 的子类,
它除了继承了BeanFactory 的所有功能外,还拥有独特的特性
,还添加了对国际化支持,资源访问支持,以及事件传播等方面的支持
2)从性能方面来说:
ApplicationContext 是
一次性加载并初始化所有的 Bean对象
,而 BeanFactory 是
需要那个才去加载那个,因此更轻量
3.2 获取指定的 Bean 对象
// 1. 得到 Spring 上下文对象
ApplicationContext context =
new ClassPathXmlApplicationContext("spring-config.xml");
// 2. 加载某个 bean
test2 t2 = (test2) context.getBean("user");
// 此处引号中的内容要与 <bean> 中填写的 id 相同
3.2.1 getBean 方法的更多使用方法
1).
根据类型获取 Bean
:
test2 t2 = context.getBean(test2.class);
2).
名称 + 类型获取 Bean
:
test2 t2 = context.getBean("user", test2.class);
区别:当有一个类型被重复注册到 spring-config.xml 中时,只能使用根据名称获取了,比如以下程序
<beans>
<bean id="user" class="test2"></bean>
<bean id="user2" class="test2"></bean>
</beans>
ApplicationContext context =
new ClassPathXmlApplicationContext("spring-config.xml");
test2 t2 = context.getBean(test2.class);
System.out.println(t2.t());
3.3 使用 Bean
// 1. 得到 Spring 上下文对象
ApplicationContext context =
new ClassPathXmlApplicationContext("spring-config.xml");
// 2. 加载某个 bean
test2 t2 = (test2) context.getBean("user");
// 3. 调用相应的方法
System.out.println(t2.t());
四. 总结
1. 操作容器之前,先要有容器,所以先要得到容器
2. 存对象
1)创建 Bean (普通类)
2)将 Bean 注册(配置)到 Spring-confing.xml 中
3. 去对象
1) 得到 Spring 上下文,并读取到 Spring 的配置文件
2)获取某一个 Bean 对象
3)使用 Bean 对象