当前位置: 首页 > news >正文

【Spring】IOC容器与Bean的常用属性配置

文章目录

  • 1.前言
  • 2.IOC容器
    • 2.1 BeanFactory 容器
    • 2.2 ApplicationContext 容器
  • 3.Bean的常用属性配置
  • 4. 总结

1.前言

在之前的文章-IOC的快速入门中讲过Bean这个概念. 本来就来介绍容器与Bean的常用属性配置

在Spring框架中,Bean指的是被Spring加载生成出来的对象。

Spring容器是Spring框架的核心,它的基本功能就是管理对象。

2.IOC容器

Spring容器是Spring框架的核心,它的基本功能就是管理对象。这个管理的过程贯穿了对象的整个生命周期,包括对象的创建、装配和销毁。从更具体的角度去理解,Spring容器像一个大仓库,负责存储和管理Bean对象。这些Bean对象在Spring容器中被创建,并且通过依赖注入等方式关联起来,形成一个完整的解决方案。

除了管理Bean对象之外,Spring容器还负责处理Bean之间的依赖关系。当一个Bean需要另一个Bean的协助时,Spring容器会将所需的Bean注入到当前Bean中,使得各个Bean能够顺利地协作完成工作。

Spring提供的容器主要有两个:

  1. BeanFactory 容器
  2. ApplicationContext 容器

2.1 BeanFactory 容器

BeanFactory是为 DI 提供基本支持的最简单的容器, 最常用的 BeanFactory 实现是 XmlBeanFactory 类。 此容器从 XML 文件中读取配置元数据,并使用它来创建完全配置的系统或应用程序。
在资源有限的情况下,如移动设备或基于小程序的应用程序,BeanFactory 通常是首选。

2.2 ApplicationContext 容器

Application Context 应用程序上下文是 Spring 的高级容器。 与 BeanFactory 类似,它可以加载 bean 定义、将 bean 连接在一起并根据请求分发 bean。 此外,它还添加了更多特定于企业的功能,例如从属性文件解析文本消息的能力以及将应用程序事件发布到感兴趣的事件侦听器的能力。

ApplicationContext是BeanFactory的子接口。ApplicationContext 包含了 BeanFactory 的所有功能,一般推荐使用它而不是 BeanFactory。

最常用的 ApplicationContext 实现是:

  • FileSystemXmlApplicationContext − 这个容器从一个 XML 文件中加载 bean 的定义。 这里需要将 XML bean 配置文件的完整路径提供给构造函数。

  • ClassPathXmlApplicationContext − 这个容器从一个 XML 文件中加载 bean 的定义。 这里您不需要提供 XML 文件的完整路径,但您需要正确设置 CLASSPATH,因为此容器看起来像 CLASSPATH 中的 bean 配置 XML 文件。

  • WebXmlApplicationContext − 此容器从 Web 应用程序中加载包含所有 bean 定义的 XML 文件。

3.Bean的常用属性配置

Bean是Spring框架在运行时管理的对象,也是任何Spring应用程序的基本构建块。其加载、作用域、生命周期的管理都由Spring操作。这意味着,当我们需要使用某个对象时,无需自己手动创建和管理该对象,而是交由Spring容器来完成这些工作

属性描述
class该属性是必需的,它指定了用于创建 bean 的 bean 类。
id此属性唯一地指定 bean 标识符。 在基于 XML 的配置元数据中,您使用 id 和/或 name 属性来指定 bean 标识符。
scope此属性指定从特定 bean 定义创建的对象的范围
constructor-arg用于注入依赖关系
properties用于注入依赖关系
autowiring mode用于注入依赖关系
lazy-initialization mode延迟初始化的 bean 告诉 IoC 容器在第一次被请求时创建一个 bean 实例,而不是在启动时
initialization method在容器设置了 bean 上的所有必要属性之后调用的回调。
destruction method当包含 bean 的容器被销毁时要使用的回调

Bean标签的属性有很多.并不是所有的属性都很重要,本文主要讲class,id和scope这三个属性

class: 该属性是必需的,它指定了用于创建 bean 的 bean 类。

在这里插入图片描述
⭐需要注意的是class的值是全类名,要把前面的包带上

id: 此属性唯一地指定 bean 标识符。 在基于 XML 的配置元数据中,您使用 id 和/或 name 属性来指定 bean 标识符。

获取Bean对象时,就是依靠id来进行区分的
在这里插入图片描述
在这里插入图片描述

scope: 此属性指定从特定 bean 定义创建的对象的范围

scope有两个属性值:

  • singleton(默认值): 代表单例
  • prototype: 代表多例

如果设置为singleton则一个容器中只会有这个一个bean对象。默认容器创建的时候就会创建该对象.
如果设置为prototype则一个容器中会有多个该bean对象。每次调用getBean方法获取时都会创建一个新对象

接下来可以验证一下scope的两个属性:
Student类:

public class Student {private int age;private String name;public Student() {System.out.println("创建了一次对象");}

在配置文件中设置Bean标签的scope属性值

    <bean class="com.exaple.entity.Student" name="student" scope="singleton"></bean>

在Main方法中对上面的id获取两次对象,输出结果中可以看到 Student类的构造方法只执行了一次
在这里插入图片描述

其它不变,更该Bean标签的scope属性值为prototype

    <bean class="com.exaple.entity.Student" name="student" scope="prototype"></bean>

在这里插入图片描述
可以看到Student类的构造方法执行了两次.

4. 总结

IOC容器有两个:BeanFactory 容器和ApplicationContext 容器. 推荐使用ApplicationContext.ApplicationContext 包含了 BeanFactory 的所有功能.
Bean最主要的三个属性(class,id和scope)中class属性是必须的,id是唯一标识符,通过id/name来指定,scope是设置Bean的单例/多例

http://www.lryc.cn/news/210662.html

相关文章:

  • 2023年下半年 系统集成项目管理工程师 真题考点(一二三四批次)(10月28、29)(网友回忆版)
  • 读韩都衣舍,谈权力转移的激励制度
  • 私有云:【10】VCenter安装win10
  • [Java/力扣100]判断两棵二叉树是否相同
  • BEC商务英语主题 定价策略|柯桥学商务英语口语
  • 第七章 ObjectScript 一般系统限制
  • 【Python百练——第1练】使用Python求100以内的所有偶数
  • springboot心理咨询管理系统
  • Java-API简析_java.net.URL类(基于 Latest JDK)(浅析源码)
  • C语言浮点型在内存中的存储
  • elementPlus | el-tabs 标签管理路由页面
  • 如何使用ffmpeg制作透明背景的视频
  • C#中对于using的使用方式
  • 【Java】HashMap集合
  • 百度网盘使用指南
  • CSS 滚动驱动动画与 @keyframes 新语法
  • 二十三种设计模式全面解析-原型模式进阶之原型管理器:集中管理对象原型的设计模式之道
  • 【微信小程序开发】学习小程序的网络请求和数据处理
  • 微信小程序 slot 不显示
  • Spring Boot 优雅配置yml配置文件定义集合、数组和Map
  • java+springboot+vue开发的大学生健康检测小程序
  • 从零开始的LINUX(四)
  • 组播应用层收不到问题-接收网卡绑定
  • 回流重绘零负担,网页加载快如闪电
  • QT5.15在Ubuntu22.04上编译流程
  • 【电路笔记】-交流波形和交流电路理论
  • vue2 系列:自定义 v-model
  • 广东木模板批发,建筑桥梁工程专用组合木模板
  • 工业相机常见的工作模式、触发方式
  • 【C语言】指针那些事(上)