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

IoC容器和bean概述

目录

说明: 3

Spring IoC容器和Bean介绍 4

容器概述 4

配置元数据 5

XML 9

作为外部配置DSL 9

构建基于XML的配置元数据 10

使用容器 11

Bean概述 12

重写bean 13

命名Bean 13

在 Bean 定义之外别名一个 Bean 13

实例化bean 14

使用构造函数实例化 14

使用静态工厂方法进行实例化 15

确定Bean的运行时类型

说明:

1.Spring Framework版本:7.0.1

2.开发框架:Spring boot(版本4.0.0)

3.开发工具:eclipse

4.jdk版本:25

Spring IoC容器和Bean介绍

本章介绍了 Spring 框架对控制反转(IoC)原则的实现。依赖注入(DI)是 IoC 的一种特殊形式,其中对象仅通过构造函数参数、工厂方法的参数或在对象实例创建后或从工厂方法返回后设置的属性来定义其依赖关系(即它们所协作的其他对象)。然后,IoC 容器在创建 bean 时注入这些依赖关系。这一过程从根本上说与 bean 本身通过直接构造类或使用诸如服务定位器模式之类的机制来控制其依赖关系的实例化或定位相反(因此得名控制反转)。

注:所谓的控制反转,就是在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制,对于spring框架来说,就是由Spring来负责控制对象的生命周期和对象间的关系

org.springframework.beans和org.springfamework.context包是Spring Framework的IoC容器的基础。BeanFactory接口提供了一种高级配置机制,能够管理任何类型的对象。ApplicationContext是BeanFactory的一个子接口。它增加了:

  • 更容易与Spring的AOP功能集成

  • 消息资源处理(用于国际化)

  • 事件发布

  • 应用层特定的上下文,如web应用程序中使用的WebApplicationContext。

简而言之,BeanFactory提供了配置框架和基本功能,ApplicationContext添加了更多特定于企业的功能。ApplicationContext是BeanFactory的一个完整超集,在本章中专门用于描述Spring的IoC容器。有关使用BeanFactory而不是ApplicationContext的更多信息,请参阅有关BeanFactory API的部分。

在Spring中,构成应用程序骨干并由Spring IoC容器管理的对象称为bean。bean是由Spring IoC容器实例化、组装和管理的对象。否则,bean只是应用程序中众多对象中的一个。bean以及它们之间的依赖关系反映在容器使用的配置元数据中。

容器概述

`org.springframework.context.ApplicationContext` 接口代表了 Spring 的 IoC 容器,负责实例化、配置和组装 Bean。容器通过读取配置元数据来获取有关要实例化、配置和组装的组件的指令。配置元数据可以表示为带有注解的组件类、具有工厂方法的配置类,或者外部的 XML 文件或 Groovy 脚本。无论采用哪种格式,您都可以构建您的应用程序以及这些组件之间丰富的相互依赖关系。

ApplicationContext接口的几个实现是核心Spring的一部分。在独立应用程序中,通常会创建AnnotationConfigApplicationContext或ClassPathXmlApplicationContext的实例。

在大多数应用场景中,不需要显式用户代码来实例化Spring IoC容器的一个或多个实例。例如,在普通web应用程序场景中,应用程序的web.XML文件中的简单样板web描述符XML就足够了(请参阅web应用程序的方便ApplicationContext实例化)。在Spring Boot场景中,应用程序上下文是基于常见的设置约定隐式引导的。

下图显示了Spring工作原理的高级视图。您的应用程序类与配置元数据相结合,以便在创建和初始化ApplicationContext后,您拥有一个完全配置和可执行的系统或应用程序。

配置元数据

如上图所示,Spring IoC容器使用一种形式的配置元数据。此配置元数据表示作为应用程序开发人员,您如何告诉Spring容器实例化、配置和组装应用程序中的组件。

Spring IoC容器本身与实际编写配置元数据的格式完全解耦。现在,许多开发人员为他们的Spring应用程序选择基于java的配置:

  • 基于注解的配置:在应用程序的组件类上使用基于注解的配置元数据定义bean。

  • 基于java的配置:通过使用基于java的配置类来定义应用程序类外部的bean。要使用这些特性,请参阅@Configuration、@Bean、@Import和@DependsOn注解。

注:

基于注解配置‌:通过在Java类或方法上添加注解(如@Component@Service@Repository@Controller等)来声明Bean和依赖关系。

基于Java配置:通过创建一个配置类(使用@Configuration注解),并在其中定义Bean方法(使用@Bean注解)。

Spring配置由容器必须管理的至少一个(通常是多个)bean定义组成。Java配置通常在@Configuration类中使用带有@ bean注解的方法,每个方法对应一个bean定义。

这些bean定义对应于构成应用程序的实际对象。通常,您定义服务层对象、持久化层对象(如存储库或数据访问对象)、表示对象(如Web控制器)、基础设施对象(如JPA EntityManagerFactory)、JMS队列等。通常,不需要在容器中配置细粒度的域对象,因为创建和加载域对象通常是存储库和业务逻辑的责任。

基于注解配置的测试代码

创建一个spring boot工程Annotation-basedContainerConfiguration

,将下列3类复制到工程中:AppConfig.java、AccountRepository.java、TransferService.java

AppConfig.java

package com.example.demo.configuration; public class AppConfig { }

AccountRepository.java

package com.example.demo.repository; import org.springframework.stereotype.Repository; @Repository publ
http://www.jsqmd.com/news/88710/

相关文章:

  • K8S资源无法删除处理方法
  • 80亿参数改写行业规则:Qwen3-VL-8B-Thinking-FP8如何重塑多模态AI应用
  • 音频二维码怎么做?音频二维码制作指南
  • 当水印遇见AI:一场像素级的美学修复之旅
  • 基于Spring Boot的在线教育平台(源码+lw+部署文档+讲解等)
  • 如何一键生成文件二维码?文件二维码在线制作指南
  • 程序在输入或输出的边界附近更容易出现缺陷,例如数组越界、循环次数错误
  • 天天劈砖休闲小游戏Linux演示教程
  • 记录安卓手机当代理服务器
  • Prompt工程能否代替模型训练?
  • 基于Python+Django的智能停车管理系统(源码+lw+部署文档+讲解等)
  • 基于python+django的在线考试系统(源码+lw+部署文档+讲解等)
  • 如何一键生成炫酷效果闪图?闪图在线制作教程
  • 1小时验证创意:VLA原型开发实战
  • C语言一维与二维数组名详解:从本质理解到高手应用
  • 15.华为OD机考 - 执行任务赚积分
  • 深入解析strspn:字符串扫描的精确尺子
  • 《Ascend C 进阶实战:高性能 Softmax 算子设计与数值稳定性优化》
  • 路径覆盖是一种白盒测试方法,旨在设计足够的测试用例,使得程序中的每一条可能执行路径至少被执行一次
  • 如何进行gif动画制作?GIF动画在线制作全攻略
  • 设计一个支持多种任务类型的任务调度器,需综合考虑任务的触发机制、执行周期、优先级管理
  • 临时笔记1
  • Jenkins自由风格作业构建和推送dokcer镜像
  • 雨燕直播案例分析:如何打造高并发直播平台
  • 普中开发板基于51单片机贪吃蛇游戏设计
  • 告别等待:CentOS 7.6镜像极速下载方案
  • QMS软件系统——全链可控·数据驱动·知识沉淀:全星QMS赋能企业质量数字化
  • 用AI优化GPU性能测试:Furmark的智能分析新思路
  • 小白也能懂的连接错误解决指南
  • 如何用AI快速生成Flink面试题答案?