一、创建Spring项目
1.1创建一个普通的Maven项目
直接点next进入下一步
1.2添加依赖
spring-context:spring 上下⽂
spring-beans:管理对象的模块
<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>
1.3添加启动类
在项目 java 文件夹下创建一个 类,包含main方法即可,这个不是必须的,只是为了测试spring的存取对象的功能。
二、存储Bean对象
Java中一个普通的对象叫做Bean;
2.1创建一个Bean
2.2将Bean存储到Spring中
2.2.1添加配置文件 spring-config.xml
如果是第一次存储bean,那么需要先在 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">
</beans>
2.2.2在配置文件中添加beans
三、从Spring中获取Bean对象
3.1创建Spring上下文
3.1.1使用 ApplicationContext得到上下文
ApplicationContext context=new ClassPathXmlApplicationContext("spring-config.xml");
划红线的部分要相互对应上,不然会报错。
3.1.2使用BeanFactory得到上下文
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
3.1.3ApplicationContext与BeanFactory的区别(面试题)
两者都是顶级接口
a.继承关系和功能方面来说:
BeanFactory是ApplicationContext的父类,BeanFactory提供了基础的访问容器的能力,而ApplicationContext除了继承了BeanFactory的所有功能之外,他还拥有独特的特性,如对国际化的支持等。
b.性能方面:
ApplicationContext是一次性加载并初始化所有的Bean对象(饿汉模式),而BeanFactory是需要哪个采取加载哪个(懒汉模式)。因此ApplicationContext在启动时比较慢,会浪费比较多资源,但第一次使用bean时比较快;而BeanFactory不浪费任何资源,但在第一次使用bean时比较慢。
3.2从spring上下文对象中获取bean
3.2.1根据id获取bean
3.2.2根据类型获取bean(不需要id)
这种方式存在一种隐患,当有一个类型被重复注册到配置文件中时,这时你再使用这种方法去获取bean,Spring就不分辨不来到底获取哪一个,就会报错。
3.3.3根据id+类型获取bean(推荐使用)
3.3使用bean对象