SpringFrameWork

SpringFrameWork简介

介绍springFrameWork框架
Spring Framework是一个为企业级应用程序开发提供全面基础设施支持的开源框架,通过集成IoC、DI和AOP等技术,使得应用程序的开发更加灵活、可维护和可扩展。Spring MVC、SpringBoot、Spring Cloud、Spring Data、Spring Security 等框架都是以SpringFrameWork为基础,所以学习SpringFrameWork框架是学习spring全家桶的基础。

目录

  • SpringFrameWork简介
  • 一,springFrameWork的模块结构
  • 二,组件
      • 2.1:组件概念
      • 2.2:组件与SpringIoC容器
  • 三,IoC(控制反转 Inversion of control)
      • 3.1:IoC概念
      • 3.2:IoC与Spring核心容器
  • 四,DI(依赖注入 Dependency injection)
      • 4.1:DI概念
      • 4.2:DI与SpringIoC容器
  • 五,SpringIoC容器
      • 5.1:SpringIoC容器容器介绍
      • 5.2:SpringIoC容器管理配置的方式
      • 5.3:SpringIoC容器的接口
      • 5.4:Spring IoC容器接口实现类


一,springFrameWork的模块结构

SpringFrameWork框架结构图
在这里插入图片描述

  • Core Container(核心容器):这是Spring框架的核心模块,包括spring-core、spring-beans、spring-context等模块。这些模块提供了Spring框架的基本组成和功能,例如反转控制(IoC)和依赖注入(DI)。
  • Data Access/Integration(数据访问/集成):这个模块提供了访问各种数据源的方法和工具,包括关系型数据库、非关系型数据库、消息队列等。Spring框架支持多种持久层框。
  • Web模块:该模块为基于Java的Web应用程序开发提供了全面的支持,包括MVC框架、WebSocket支持、RESTful Web服务等功能。
  • AOP(面向切面编程)模块:该模块提供了一种新的编程范式,用于解决诸如日志记录、事务管理、安全等跨多个应用程序或模块的问题。
  • Test模块:该模块提供了对单元测试和集成测试的支持,使得测试代码可以与应用程序代码分离

二,组件

2.1:组件概念

在Spring框架中,组件是指一个可重用的模块,通常是一组相关的类和接口的集合。Spring组件的目标是提供一组相关的功能,以便在不同的应用程序和环境中重用。组件通常具有明确定义的接口和规范,以便与外部环境进行交互。

2.2:组件与SpringIoC容器

SpringIoC容器是用来管理组件的,Java后端程序一般采用三层架构的设计思想,控制层,业务逻辑层,和持久层,各个层的相关接口以及类也可以理解是组件,后端功能的实现要依靠组件的实例化对象(控制层组件调用业务逻辑层组件,业务逻辑层调用持久层组件)

三,IoC(控制反转 Inversion of control)

3.1:IoC概念

IoC(inversion of control),即控制反转,是一种设计原则,通过反转控制权来降低代码间的耦合度。在传统的程序设计中,通常由程序本身负责对象的创建和管理,这种方式称为正向控制。但在IoC原则下,对象的创建和管理交由外部容器(IoC容器)来负责,而应用程序代码只需要关注业务逻辑,不再需要考虑对象的创建和管理,这种方式称为反向控制,IoC的核心思想是将原本在应用程序中负责对象创建和生命周期管理的代码抽取出来,放到一个外部的容器中来管理。这个容器负责创建、配置、组装和销毁对象,同时处理对象间的依赖关系。通过这种方式,可以将应用程序中的对象解耦,降低代码间的耦合度,提高代码的可维护性和可扩展性。

3.2:IoC与Spring核心容器

SpringIoC容器实现了IoC功能,通过读取配置文件或者注释等方式,Spring核心容器可以读取配置文件中组件信息,了解那些组件需要被核心容器管理,从而在核心容器启动时实例化这些组件。

四,DI(依赖注入 Dependency injection)

4.1:DI概念

DI,即依赖注入(Dependency Injection),也是实现控制反转(IoC)的一种方式。它的主要目的更加灵活地管理和配置对象及其依赖关系,降低代码之间的耦合度。在依赖注入中,对象不自己查找其依赖关系,或者通过构造函数、属性或工厂模式等方法来创建其依赖关系,而是在运行时由外部实体(例如一个容器或框架)将这些依赖关系注入到对象中。这样,对象与其依赖项之间的关系就被外部化了,Java对象本身不再负责这些关系的创建和维护。

4.2:DI与SpringIoC容器

SpringIoC容器所管理的组件之间可能存在相互调用的关系,如控制层组件调用业务逻辑层组件,一般是需要在控制层组件中new出业务逻辑层的组件,这是一种硬编码的方式,导致组件之间存在一种强耦合关系,不利于代码的模块化、可维护性和可扩展性。而SpringIoC容器可以通过配置文件或注释等方式去把组件所需要的依赖注入其中,从而实现了组件之间的依赖关系,SpringIoC容器在读取配置文件后所实例化的组件对象便存在这种依赖关系。

五,SpringIoC容器

5.1:SpringIoC容器容器介绍

SpringIoC容器是一个复杂容器,简单容器只能存储,删除对象如数组,复杂容器可以管理对象。SpringIoC容器不仅具备存储组件的功能,还具备诸如管理组件生命周期、处理依赖关系等功能。Spring IoC容器是Spring核心容器的一种实现,它提供了控制反转(IoC)机制的实现。

5.2:SpringIoC容器管理配置的方式

IoC容器通过XML配置文件、Java注释或Java代码等方式来定义和配置Bean,并负责创建Bean的实例以及建立Bean之间的依赖关系。应用程序中的组件只需要通过容器来获取所需的Bean实例,而不需要自己手动创建或管理这些Bean。

5.3:SpringIoC容器的接口

Spring IoC容器是一个接口,它定义了IoC容器的行为,并提供了一种标准化的方式来实现和使用IoC容器。以下是Spring IoC容器的核心接口:

  • BeanFactory:BeanFactory是Spring IoC容器的核心接口,它提供了IoC容器的所有功能。BeanFactory接口定义了各种用于创建、配置和组装Bean的方法。它是Spring IoC容器最主要的接口,其他高级容器通常建立在BeanFactory的基础上。
  • ApplicationContext:ApplicationContext是基于BeanFactory的一个扩展,提供了更多的功能和特性。它继承了BeanFactory的所有功能,并添加了诸如国际化、事件传播、资源加载等企业级特性。在Spring框架中,ApplicationContext是最常用的容器

5.4:Spring IoC容器接口实现类

主要有以下几种实现类

  • AnnotationConfigApplicationContext,用于解析Java注释来定义和配置Bean,它通过读取Java类的注释信息来创建 IOC 容器对象。
  • ClassPathXmlApplicationContext,通过读取类路径下的 XML 格式的配置文件创建 IOC 容器对象。
  • WebApplicationContext,专门为 Web 应用准备,基于 Web 环境创建 IOC 容器对象,并将对象引入存入 ServletContext 域中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/287187.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java实现大文件分片上传

背景: 公司后台管理系统有个需求,需要上传体积比较大的文件:500M-1024M;此时普通的文件上传显然有些吃力了,加上我司服务器配置本就不高,带宽也不大,所以必须考虑多线程异步上传来提…

数据结构与算法python版本之线性结构之队列Quene

什么是队列? 队列是一种有次序的数据集合,其特征是:新数据项的添加总发生在一端(通常称为“尾rear”端),而现存数据项的移除总发生在另一端(通常称为“首front”端);当数…

缓存数据一致性策略如何分类?

一、概述 数据库与缓存数据一致性问题,一直以来都是大家比较关注的问题。针对一致性的解决方案也是非常多,以下主要针对方案的梳理与分类: 数据库数据与缓存数据一致性的方案,可以从不同的角度来分类,比如&#xff1…

稳定币记录

稳定币: 稳定币(Stablecoin)是一种加密货币,其设计目的是维持相对稳定的价值,通常与某种法定货币(如美元、欧元)或其他资产(如黄金)挂钩。稳定币通过将加密货币与相应的…

Flink-【时间语义、窗口、水位线】

1. 时间语义 1.1 事件时间:数据产生的事件(机器时间); 1.2 处理时间:数据处理的时间(系统时间)。 🌰:可乐 可乐的生产日期 事件时间(可乐产生的时间&…

计算机毕业设计 SpringBoot的停车场管理系统 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

逻辑回归算法到底能做什么

逻辑回归(Logistic Regression)是一种广义的线性回归分析模型,常用于数据挖掘、疾病自动诊断、经济预测等领域。它根据给定的自变量数据集来估计事件的发生概率。变量的范围在0和1之间,通常用于二分类问题,最终输出的预…

Opencv(C++)学习之cv::calcHist 任意bin数量进行直方图计算

**背景:**当前网上常见的直方图使用方法都是默认使用256的范围,而对于使用特定范围的直方图方法讲的不够清楚。仔细研究后总结如下: 1、常见使用方法,直接对灰度图按256个Bin进行计算。 Mat mHistUn; int channels[1] { 0 }; {…

键盘数字键打不出来怎么解锁?收藏好这4个简单方法!

“我在使用电脑进行办公时,突然发现我电脑键盘的数字键无法输入,这该怎么办呢?我应该如何解锁呢?请给我出出主意吧!” 在日常使用电脑时,很多用户都需要使用键盘输入文字。但有时候部分用户也会遇到键盘数字…

你知道vue中key的原理吗?说说你对它的理解

一、Key是什么 开始之前&#xff0c;我们先还原两个实际工作场景 当我们在使用v-for时&#xff0c;需要给单元加上key <ul><li v-for"item in items" :key"item.id">...</li> </ul>用new Date()生成的时间戳作为key&#xff0c…

Docker 网络管理

一、Docker网络简介 Docker网络是容器化应用程序的重要组成部分&#xff0c;它使得容器之间可以互相通信和连接&#xff0c;同时也提供了容器与外部环境之间的隔离和连接。 二、Docker网络网络模式 Docker 提供了多种网络模式&#xff0c;可以通过docker network ls 命令查看…

springboot实现ChatGPT式调用(一次调用,持续返回)

下边实现了一个持续返回100以内随机数的接口&#xff0c;在接口超时之前会每隔1秒返回一个随机数 GetMapping(value "/getRandomNum", produces MediaType.TEXT_EVENT_STREAM_VALUE) public SseEmitter getRandomNum() {SseEmitter emitter new SseEmitter();Th…

五、Spring AOP面向切面编程(基于注解方式实现和细节)

本章概要 Spring AOP底层技术组成初步实现获取通知细节信息切点表达式语法重用&#xff08;提取&#xff09;切点表达式环绕通知切面优先级设置CGLib动态代理生效注解实现小结 5.5.1 Spring AOP 底层技术组成 动态代理&#xff08;InvocationHandler&#xff09;&#xff1a;…

SQL Server 权限管理

CSDN 成就一亿技术人&#xff01; 2024年 第一篇 难度指数&#xff1a;* * CSDN 成就一亿技术人&#xff01; 目录 1. 权限管理 什么是权限管理&#xff1f; SQL server的安全机制 服务器级角色 数据库级角色 对象级角色 2. 创建用户 赋予权限 最重要的一步骤 1. 权限…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《计及源荷不确定性的综合能源系统日前-日内协调优化调度》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主的专栏栏目《论文与完整程序》 这个标题指的是一个综合能源系统&#xff08;包括多种能源资源和负荷需求&#xff09;&#xff0c;在考虑到源&#xff08;能源供给&#xff09;和荷&#…

代码随想录算法训练营Day16 | 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

LeetCode 654 最大二叉树 本题思路&#xff1a;我们可以看到每次其实这个找最大值&#xff0c;然后创建节点的过程就是一个二叉树的前序遍历的过程。所以&#xff0c;我们可以递归来完成它。 先创找到数组中&#xff0c;最大的值的下标&#xff0c;然后创建根节点然后根据下标…

【零基础入门TypeScript】TypeScript - 基本语法

目录 你的第一个 TypeScript 代码 编译并执行 TypeScript 程序 编译器标志 TypeScript 中的标识符 TypeScript ─ 关键字 空格和换行符 TypeScript 区分大小写 分号是可选的 TypeScript 中的注释 TypeScript 和面向对象 语法定义了一组编写程序的规则。每种语言规范都…

Linux系统:引导过程与服务控制

目录 一、linux系统引导过程 1、引导过程介绍 1.1 引导过程总览图 1.2 引导过程详解 1.3 系统初始化进程 1.4 Ststemd单元类型 1.5 运行级别所对应的Systemd目标 二、排除启动类故障 1、修复MBR扇区故障 1.1 故障原因 1.2 故障现象 1.3 解决思路 1.4 详细操作步骤…

密码学:带密钥的消息摘要算法一数字签名算法

文章目录 前言手写签名和数字签名前置知识点&#xff1a;消息摘要算法数字签名算法数字签名算法的由来数字签名算法在实际运用的过程附加&#xff1a;签名和摘要值的解释 数字签名算法的家谱数字签名算法的消息传递模型经典数字签名算法-RSA实现 数字签名标准算法-DSA实现 圆曲…

IPC之十二:使用libdbus在D-Bus上异步发送/接收信号的实例

IPC 是 Linux 编程中一个重要的概念&#xff0c;IPC 有多种方式&#xff0c;本 IPC 系列文章的前十篇介绍了几乎所有的常用的 IPC 方法&#xff0c;每种方法都给出了具体实例&#xff0c;前面的文章里介绍了 D-Bus 的基本概念以及调用远程方法的实例&#xff0c;本文介绍 D-Bus…