Spring项目创建与 Spring Bean 的存储与读取

本文介绍了如何使用Spring创建Maven项目,添加Spring框架支持,创建和存储Bean对象,以及通过Spring配置文件和ApplicationContext/BeanFactory获取和使用Bean。重点讲解了DI操作和两者之间的区别。
摘要由CSDN通过智能技术生成

前言:我们知道,Spring 就是⼀个包含了众多⼯具⽅法的 IoC 容器。既然是容器那么它就具备

两个最基本的功能:

将对象存储到容器(Spring)中;
从容器中将对象取出来。
一、创建Spring项目
接下来使⽤ Maven ⽅式来创建⼀个 Spring 项⽬,创建 Spring 项⽬和 Servlet 类似,总共分为以下 3步:

创建⼀个普通 Maven 项⽬。


添加 Spring 框架⽀持(spring-context、spring-beans)。
添加启动类。
在 Java 语⾔中对象也叫做 Bean,所以后⾯咱们再遇到对象就以 Bean 著称。

1.1 创建Maven项目


 当目录变成如下所示时,Maven项目就初始化好了。

1.2 添加 Spring 框架依赖
从中央仓库中下载Spring Context的依赖:

1.3 添加启动类
最后在创建好的项目Java文件夹下创建一个启动类,包含main方法即可:

二、Bean对象的创建与存储
2.1 创建Bean
所谓的 Bean 就是 Java 语⾔中的⼀个普通对象,实现代码如下:

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">
</beans>


接下来,再将Student对象注册到Spring中即可,具体操作如下:

2.3 获取并使用Bean对象
获取并使用Bean对象,分为以下三步:

  1. 得到Spring(上下文)对象,因为对象都交给Spring管理,所以获取对象要从Spring中获取,那么就先得到Spring的上下文。
  2. 通过Spring(上下文),获取某一个指定的Bean对象
  3. 使用Bean对象

如果取多个 Bean 的话重复以上第 2、3 步骤。

2.3.1 创建Spring上下文
利用ApplicationContext来创建Spring 上下文:

 需要注意的是:这里的路径必须与Spring配置文件的名称相同,否则无法创建成功。

2.3.2 从Spring容器中获取Bean对象

延申(多种方式获取Bean):
1.通过名称获取:

2.通过类型获取:

需要注意,如果Spring中一个类型存储了多个实例,那么使用类型获取Bean就会报错:

分析:

在这段代码中,获取Bean时需要将其强制转换为Student类型,原因是Spring容器内部存储的对象都是Object类型的形式存储的,所以Spring容器能够管理多种不同类型的对象。当你从容器中获取一个Bean时,它返回的是Object类型的引用。因此为了使用该Bean的具体类型和方法,你需要将其强制转换为实际的Student类型。

在一个类在bean中存储了两次,那么这两个bean地址是否相同呢,我们来验证一下:

因此,这里创建的两个不同的bean实例,地址是不同的,不会因为存的是同一个类的bean就地址一样。

3.通过名称+类型方式获取:

2.3.3 使用bean

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();
    }
}

运行结果:

2.3.4 ApplicationContext VS BeanFactory(常见面试题)
除了ApplicationContext之外,我们还可以使用BeanFactory来作为Spring的上下文,如下代码所示:

我们发现,好像在当前的场景下,ApplicationContext 和 BeanFactory 效果是一样的,这是因为ApplicationContext属于BeanFactory的子类:

既然是两者之间存在继承关系,那我们来看看两者之间有哪些区别:

我们先在com.spring.demo包下创建一个Teacher类:

 并在Spring配置文件下,把Teacher存到Spring中:

观察两者的区别:

可以发现,Application是一次性加载并初始化所有的Bean对象,而BeanFactory属于懒加载,是需要哪个才去加载哪个,因此BeanFactory更加轻量。

ApplicationContext 和 BeanFactory的区别总结

继承关系和功能⽅⾯来说:Spring 容器有两个顶级的接⼝:BeanFactory 和ApplicationContext。其中 BeanFactory 提供了基础的访问容器的能⼒,⽽ApplicationContext属于 BeanFactory 的⼦类,它除了继承了 BeanFactory 的所有功能之外,它还拥有独特的特性,还添加了对国际化⽀持、资源访问⽀持、以及事件传播等⽅⾯的⽀持。
从性能⽅⾯来说:ApplicationContext 是⼀次性加载并初始化所有的 Bean 对象,⽽BeanFactory 是需要那个才去加载那个,因此更加轻量,因此ApplicationContext比较费内存,一次性加载完成,但是在之后的读取速度会非常快,而BeanFactory因为需要节省内存,调用时才加载初始化bean,所有效率不高。
三、总结
a.创建Spring项目

创建一个maven项目
添加Spring-context依赖
创建一个启动类(为后面从Spring容器中获取bean做准备)
b.存储Bean

先创建Bean对象
通过Spring配置文件(spring-config.xml)<bean id="bean名称" class="包名+类名" ></bean>
c.读取bean

得到Spring对象(ApplicationContext,BeanFactory)
通过Spring对象 getBean方法获取Bean对象【DI操作】
非必须:使用bean


版权声明:本文为CSDN博主「韵秋梧桐」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Trong_/article/details/131788856

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值