Spring系统架构与主要概念

news2025/1/16 1:37:50

Spring系统架构与主要概念

    • Spring Framework系统架构
      • Core Container 核心容器
      • AOP 层
      • 数据层
      • Web层
      • 测试层
    • 业务逻辑
      • Spring之前遇到的问题
      • 解决方案
    • Spring核心概念
      • IOC(Inversion of Control)控制反转
      • DI(Dependency Injection)依赖注入

Spring Framework系统架构

Spring 更新至Spring5.0,不过我们依旧以Spring4.0系统架构图作为基础观察:
Spring4系统架构图

Core Container 核心容器

  • Core Container:核心容器,这个模块是Spring最核心的模块,其他的都需要依赖该模块

AOP 层

  • AOP:面向切面编程,它依赖核心层容器,目的是在不改变原有代码的前提下对其进行功能增强。
  • Aspects:AOP是思想,Aspects是对AOP思想的具体实现。

数据层

  • Data Access:数据访问,Spring全家桶中有对数据访问的具体实现技术。
  • Data Integration:数据集成,Spring支持整合其他的数据层解决方案,比如Mybatis。
  • Transactions:事务,Spring中事务管理是Spring AOP的一个具体实现。

Web层

测试层


业务逻辑

Spring之前遇到的问题

在Spring之前我们写代码容易遇到高耦合问题,如下图所示,业务层的实现需要new一个数据层的对像,但是如果我们的数据层发生改变时,业务层的对象必须重新新建,重新进行编译、打包、部署,改动相对较多,代码耦合度较高。
代码现状
出现新的改动

解决方案

很明显如果我们可以把业务层的对象健在别的地方就能避免这种情况。
去掉对象
当然直接去掉是肯定不行的,我们之前说了只是健在别的地方,Spring便是帮我们做这个事情


Spring核心概念

IOC(Inversion of Control)控制反转

使用对象时,由主动new产生对象转换为由外部提供对象,此过程中对象创建控制权由程序转移到外部,此思想称为控制反转。

也就是说,我们把需要新建的对象(当然不止我们之前提到的数据层对象,业务层对象同样也可以)放在IOC容器中(交给IOC管理),每当我们需要对象时,直接找IOC拿就行,而在IOC容器中这些被创建管理的对象,我们把它叫做Bean

容器

所以我们把所有对象放在IOC就可以直接启动该程序了吗?嗯?可是我们怎么知道业务层和数据层的关系捏?我们开发的逻辑当然是Service业务层依赖Dao层的数据,现在IOC中只是又了对象,可他们之间我们并没有赋予关系,所以当然是启动不了啦,所以我们需要把dao层对象交给service,也就是说要绑定service和dao对象之间的关系,于是我们引入新的概念 DI(Dependency Injection)依赖注入。

DI(Dependency Injection)依赖注入

依赖注入
如图所示,DI依赖注入就是建立IOC容器中各个对象之间的关系。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SRv6实践项目(四):基于YANG的配置下发

在本章节,主要是了解YANG是什么,以及基于YANG下发配置的工作原理: 1.什么是YANG 在介绍之前,为了给大家一个最直观的感受,我们打开yang工具,它被打包成一个容器了,可以轻松的使用,…

完美解决丨1. **`SyntaxError: invalid syntax`**

SyntaxError: invalid syntax 因为没有符合语法要求,导致报错。 解决办法: 语法错误的原因主要是代码的风格,例如: 左括号或者右括号没有配对;左括号或者右括号没有放在语句的正确位置;缺少冒号&#xff1…

Window10下安装DPDK

由于我装的是vs2019,打开Visual Studio Installer,在可选下,选择Windows 10 SDK,点击修改。 右键此电脑属性,查看Windows10版本。 安装WDK,打开网址https://learn.microsoft.com/zh-cn/windows-hardware/…

计算机系统-链接

例行前言: 本篇不是学习课程时的笔记,是重看这本书时的简记。对于学习本课程的同学,未涉及的内容不代表考试不涉及,部分省略的部分是在该课程的讨论课中学习的(PIC,放出了我在讨论课中的PPT作为参考),核心…

Sentinel使用

文章目录 一. 初识Sentinel1. 雪崩问题及解决方案2. 服务保护技术对比3. Sentinel介绍和安装4. 微服务整合Sentinel 二. 限流规则1. 快速入门2. 流控模式3. 流控效果4. 热点参数限流 三. 隔离与降级—调用方保护方案1. FeignClinet整合sentinel2. 线程隔离(舱壁模式…

vue3中的单文件组件<script setup>和setup函数区别 详解

文章目录 简介基本语法变量和方法多的使用注册组件动态组件使用外部文件方法组件通信props与defineProps、emitdefineEmitsdefineExpose 获取 attrs、slots 和useAttrs、useSlots 方法与普通的 < script > 一起使用v-bind() CSS变量注入style的新特性之global对await异步…

行业认可,知道创宇入选安全牛第十版全景图30个细分领域

近日&#xff0c;国内网络安全领域专业媒体安全牛正式发布了第十版《中国网络安全行业全景图》&#xff08;以下简称“全景图”&#xff09;&#xff0c;知道创宇凭借过硬的技术实力及成熟的市场应用获得行业认可&#xff0c;入围10项一级安全分类共计30项二级细分领域&#xf…

ASEMI代理ADI亚德诺AD8130ARZ-REEL7车规级芯片

编辑-Z AD8130ARZ-REEL7芯片参数&#xff1a; 型号&#xff1a;AD8130ARZ-REEL7 −3dB带宽&#xff1a;250MHz 0.1 dB平坦度的带宽&#xff1a;25MHz 斜率&#xff1a;930V/μs 建立时间&#xff1a;20ns 上升和下降时间&#xff1a;1.5ns 输出超速恢复&#xff1a;30n…

访学案例分享|经济学老师获英国两高校邀请函

D老师所在国内高校鼓励教职员工通过各种渠道公派或者自筹经费出国访学进修。在考虑了学校要求及个人条件后&#xff0c;其决定用自费方式赴英国访学。我们分别获得了英国利兹贝克特大学和邓迪大学的邀请函&#xff0c;最终D老师顺利过签&#xff0c;如期出国。 D老师背景&#…

网络编程【UDP数据报套接字编程】

目录 1.网络编程基础 1.1 为什么需要网络编程&#xff1f; 1.2 什么是网络编程 1.3 网络编程中的基本概念 2.Socket套接字 2.1 分类 3.UDP数据报套接字编程 3.1 DatagramSocket API 3.2 DatagramPacket API 3.3 基于 UDP socket 写一个简单的回显客户端服务器程序&am…

设计模式 -- 桥梁模式

前言 月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂) 央是一片海洋,海乃百川,代表着一块海绵(吸纳万物) 泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出) 月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容 希望大家一起坚持这个过程,也同…

自适应安全、主权云、超级自动化顶级政府技术趋势

根据分析公司 Gartner 的数据&#xff0c;自适应安全、主权云和超级自动化是 2023 年十大政府技术趋势之一。 确定了 2023 年的 10 大政府技术趋势&#xff0c;这些趋势可以指导公共部门领导者在为后数字化政府做准备和不懈地关注任务目标时加速转型。 当前的全球动荡和技术中…

9-2分布迭代次数的15个梯度

( A, B )---1*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有1个节点&#xff0c;AB训练各由11张二值化的图片组成&#xff0c;让A中有3个0&#xff0c;B中全是0&#xff0c;排列组合A的所有可能&#xff0c;统计迭代次数的顺序。 A-B 迭代次数 标准差 势能 标准差势能 11 …

30天学会《Streamlit》(6)

30学会《Streamlit》是一项编码挑战&#xff0c;旨在帮助您开始构建Streamlit应用程序。特别是&#xff0c;您将能够&#xff1a; 为构建Streamlit应用程序设置编码环境 构建您的第一个Streamlit应用程序 了解用于Streamlit应用程序的所有很棒的输入/输出小部件 第6天 - 使…

【案例教程】基于RWEQ模型的土壤风蚀模数估算及其变化归因分析实践技术

土壤风蚀是一个全球性的环境问题。中国是世界上受土壤风蚀危害最严重的国家之一&#xff0c;土壤风蚀是中国干旱、半干旱及部分湿润地区土地荒漠化的首要过程。中国风蚀荒漠化面积达160.74104km2&#xff0c;占国土总面积的16.7%&#xff0c;严重影响这些地区的资源开发和社会经…

什么是5G?关于5G你需要知道的知识

问&#xff1a;什么是5G&#xff1f; Answer&#xff1a; 5G是第五代移动网络。它是继1G、2G、3G、4G网络之后的新的全球无线标准。5G 支持一种新型网络&#xff0c;旨在将几乎所有人和所有事物连接在一起&#xff0c;包括机器、物体和设备。 5G 无线技术旨在为更多用户…

【MAVEN_Configuration】maven下载配置IDEA配置以及阿里云镜像配置

&#xff03;    下载 MAVNEDownLoad &#xff03; 配置 解压 指定文件夹 系统变量配置 在这里插入图片描述 check cmd 配置settings 本地仓库 阿里云镜像配置 mvn全局jdk <!-- java版本 --> <profile> <id>jdk-1.8</id> <activat…

JavaSE/内部类

前言 在学习Java的过程当中&#xff0c;不难发现Java全是由类与对象构成的&#xff0c;所以在一个类当中定义和使用一个另外一个类是我们学习过程中必须要学会使用的&#xff0c;而这种类&#xff0c;被称之为内部类。 一、实例内部类 class A{void a(){}class B{void a(){}} …

计算机图形学(5):OpenGL光照

参考 介绍 现实世界中的光照是极其复杂&#xff0c;难以计算的&#xff0c;因此OpenGL的光照使用的是简化的模型&#xff0c;其中一个模型被称为冯氏光照模型(Phong Lighting Model)。 冯氏光照模型的主要结构由三个分量组成&#xff1a; 环境(Ambient)光照 漫反射(Diffuse)…

【Docker学习三部曲】—— 入门篇

Docker 入门 Docker 概述 1️⃣ 什么是 docker &#xff1f; Docker 是一种运行应用程序的平台&#xff0c;它可以使应用程序在容器中不受环境差异的影响进行部署和运行。Docker 的流行度越来越高&#xff0c;是因为它可以帮助在不同的开发者和开发团队之间实现代码的共享和…