目录
一、创建Spring项目
1.1 创建Maven项目
1.2 添加 Spring 框架依赖
1.3 添加启动类
二、Bean对象的创建与存储
2.1 创建Bean
2.2 将Bean注册到容器
2.3 获取并使用Bean对象
2.3.1 创建Spring上下文
2.3.2 从Spring容器中获取Bean对象编辑
延申(多种方式获取Bean):
2.3.3 使用bean
2.3.4 ApplicationContext VS BeanFactory(常见面试题)
三、总结
前言:我们知道,Spring 就是⼀个包含了众多⼯具⽅法的 IoC 容器。既然是容器那么它就具备
两个最基本的功能:
接下来使⽤ Maven ⽅式来创建⼀个 Spring 项⽬,创建 Spring 项⽬和 Servlet 类似,总共分为以下 3步:
在 Java 语⾔中对象也叫做 Bean,所以后⾯咱们再遇到对象就以 Bean 著称。
当目录变成如下所示时,Maven项目就初始化好了。
最后在创建好的项目Java文件夹下创建一个启动类,包含main方法即可:
所谓的 Bean 就是 Java 语⾔中的⼀个普通对象,实现代码如下:
在创建好的项目中添加 Spring 配置文件 spring-config.xml,将此文件放在resources的根目录下:
Spring 配置⽂件的固定格式为以下内容(无需记忆):
接下来,再将Student对象注册到Spring中即可,具体操作如下:
获取并使用Bean对象,分为以下三步:
如果取多个 Bean 的话重复以上第 2、3 步骤。
利用ApplicationContext来创建Spring 上下文:
需要注意的是:这里的路径必须与Spring配置文件的名称相同,否则无法创建成功。
1.通过名称获取:
2.通过类型获取:
需要注意,如果Spring中一个类型存储了多个实例,那么使用类型获取Bean就会报错:
在一个类在bean中存储了两次,那么这两个bean地址是否相同呢,我们来验证一下:
因此,这里创建的两个不同的bean实例,地址是不同的,不会因为存的是同一个类的bean就地址一样。
3.通过名称+类型方式获取:
import com.spring.demo.Student;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App {
public static void main(String[] args) {
//1.得到Spring的上下文对象,创建的时候需要配置 Spring配置 的信息
ApplicationContext context =
new ClassPathXmlApplicationContext("Spring-config.xml");
//2。从Spring容器中获取到Bean对象
Student student = (Student)context.getBean("student");
//3.使用Bean(非必须的)
student.sayHi();
}
}
运行结果:
除了ApplicationContext之外,我们还可以使用BeanFactory来作为Spring的上下文,如下代码所示:
我们发现,好像在当前的场景下,ApplicationContext 和 BeanFactory 效果是一样的,这是因为ApplicationContext属于BeanFactory的子类:
既然是两者之间存在继承关系,那我们来看看两者之间有哪些区别:
我们先在com.spring.demo包下创建一个Teacher类:
并在Spring配置文件下,把Teacher存到Spring中:
观察两者的区别:
可以发现,Application是一次性加载并初始化所有的Bean对象,而BeanFactory属于懒加载,是需要哪个才去加载哪个,因此BeanFactory更加轻量。
ApplicationContext 和 BeanFactory的区别总结
a.创建Spring项目
b.存储Bean
c.读取bean