Spring启示录

news2024/10/7 14:32:12

2023.11.3

        今天正式开始Spring的学习。这一章主要学习一些开发中的原则和思想,以此引出接下来要学的Spring框架。


OCP开闭原则

        在软件开发过程中应当对扩展开放,对修改关闭。也就是说,如果在进行功能扩展的时候,添加额外的类是没问题的,但因为功能扩展而修改之前运行正常的程序,这是不被允许的。因为一旦修改之前运行正常的程序,就会导致项目整体要进行全方位的重新测试。这是相当麻烦的过程。导致以上问题的主要原因是:代码和代码之间的耦合度太高。

依赖倒置原则DIP

        依赖倒置原则(Dependence Inversion Principle),简称DIP,主要倡导面向抽象编程,面向接口编程,不要面向具体编程,让上层不再依赖下层,下面改动了,上面的代码不会受到牵连。这样可以大大降低程序的耦合度,耦合度低了,扩展力就强了,同时代码复用性也会增强。

        总结来说即:高层模块不应该依赖于低层模块,两者都应该依赖于抽象。

控制反转IoC

        控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计思想,可以用来降低代码之间的耦合度,符合依赖倒置原则。

        控制什么?控制对象的创建和销毁,指的是控制对象的生命周期。

        反转什么:之前我们创建一个对象都是new,现在有了IOC了,指的是把对象的控制权交给了IOC容器。

        总结来说即:将对象的创建权和对象与对象之间关系的管理权交出去,由第三方容器来负责创建与维护

        控制反转常见的实现方式:依赖注入(Dependency Injection,简称DI),通常,依赖注入的实现由包括两种方式:

  • set方法注入
  • 构造方法注入

下面这张图很好的解释了IoC的作用:

而Spring框架就是一个实现了IoC思想的框架。

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

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

相关文章

美国市场11大类目热销榜公开!哪些商品遥遥领先?

TikTok美国市场9月GMV远超市场预期,凸显出强劲的消费需求。 但10月战绩梅开二度了!为什么怎么说? 据超店有数平台数据监测,TikTok美国市场10月销售额大幅增长42%,商品数增长43%,商品销量增长43%&#xff…

深度学习_8_对Softmax回归的理解

回归问题,例如之前做房子价格预测的线性回归问题 而softmax回归是一个分类问题,即给定一个图片,从猫狗两种动物类别中选出最可靠的那种答案,这个是两类分类问题,因为狗和猫是两类 上述多个输出可以这样理解,假设一个图…

JDBC 操作BLOB类型的数据

1 操作BLOB类型字段 1.1 MySQL BLOB类型 MySQL中,BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据。 插入BLOB类型的数据必须使用PreparedStatement,因为BLOB类型的数据无法使用字符串拼接写的。…

300万美元!澳大利亚昆士兰州投资当地首家量子公司AQC

澳大利亚模拟量子电路公司(AQC)联合创始人 Tom Stace 教授和 Arkady Federov 副教授(图片来源:网络) 澳大利亚风险投资基金会Uniseed为澳大利亚昆士兰大学的两名教授提供了300万美元的资金,资助他们创办了…

Linux内核input子系统详解

目录 1 input子系统整体架构 2 input子系统驱动框架分析 2.1 怎么添加input_dev 2.2 input_dev和input_handler匹配后,connec函数做了什么 3 input子系统读数据流程 3.1 open输入设备流程 3.2 read读取输入事件流程 4 应用程序读取的输入数据是怎样的 4.1 …

支付宝AI布局: 新产品助力小程序智能化,未来持续投入加速创新

支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA收款等生活服务应用。 支付宝不仅是一个支付工具,也是一个数字生活平台,通过…

cplex基础入门(三)之运行调试debug

聊聊题外话,你用cplex进行代码编写,其实你也可以相当于在编程一样,那对于编程,有一项非常核心的能力就是代码调试以及debug的能力,那你运行以及编写cplex也是一样,同样需要你会使用调试的方式,来…

如何去除视频水印?三种简便有效的方法解决视频水印问题

在当今社交媒体时代,视频分享已成为一种流行趋势。然而,很多人在分享自己的作品时却苦于视频上存在的水印,水印通常是出于版权保护或品牌推广的目的而添加到视频中的,但有时它们可能会对用户体验造成负面影响。 如果您正在寻找如何…

同步盘选型指南:如何选择最适合你的同步盘?

同步盘是一种文件协同工具,它可以将数据信息实时同步至不同的设备上,不用担心电脑不在,就无法查看文件。本文调研了多位同步盘用户的真实体验,为大家总结了一份同步盘选型指南,助您找到更适合自己的同步盘工具。 如何挑…

《python深度学习》笔记(二十):神经网络的解释方法之CAM、Grad-CAM、Grad-CAM++、LayerCAM

原理优点缺点GAP将多维特征映射降维为一个固定长度的特征向量①减少了模型的参数量;②保留更多的空间位置信息;③可并行计算,计算效率高;④具有一定程度的不变性①可能导致信息的损失;②忽略不同尺度的空间信息CAM利用…

hadoop配置文件自检查(解决常见报错问题,超级详细!)

本篇文章主要的内容就是检查配置文件,还有一些常见的报错问题解决方法,希望能够帮助到大家。 一、以下是大家可能会遇到的常见问题: 1.是否遗漏了前置准备的相关操作配置? 2.是否遗的将文件夹(Hadoop安装文件夹,/dat…

【后端开发】手写一个简单的线程池

半同步半异步线程池 半同步半异步线程池分为三层: 同步服务层 —— 处理来自上层的任务请求,将它们加入到排队层中等待处理。 同步排队层 —— 实际上是一个“同步队列”,允许多线程添加/取出任务,并保证线程安全。 异步服务层…

Windows环境下使用VLC获取到大疆无人机的RTMP直播推流

1.环境准备 1.安装nginx 1.7.11.3 Gryphon 下载地址:http://nginx-win.ecsds.eu/download/ 下载nginx 1.7.11.3 Gryphon.zip,解压后修改文件夹名称为nginx-1.7.11.3-Gryphon; 2.安装nginx-rtmp-module 下载地址:GitHub - arut…

实用-----七牛云绑定自定义域名

实用-----七牛云绑定自定义域名(无废话 无尿点) 1.打开七牛云 点击自己需要绑定的实例 https://portal.qiniu.com/kodo/bucket 2. 点击域名管理 3.点击添加域名 输入你要绑定的域名 4. 配置 CACHE 复制 CACHE 码 访问腾讯云 CDN 官网 https://console.…

Minium:专业的小程序自动化工具

小程序架构上分为渲染层和逻辑层,尽管各平台的运行环境十分相似,但是还是有些许的区别(如下图),比如说JavaScript 语法和 API 支持不一致,WXSS 渲染表现也有不同,所以不论是手工测试&#xff0c…

3D模型格式转换工具HOOPS Exchange:模型的几何数据获取!

3D CAD数据在制造、工程和设计等各个领域都扮演着重要的角色。为了促进不同软件应用程序之间的协作和互操作性,它通常以不同的格式进行交换。HOOPS Exchange是一个强大的软件开发工具包,提供了处理和将3D CAD数据从一种格式转换为另一种格式的解决方案。…

京东商品评论API接口(评论内容|日期|买家昵称|追评内容|评论图片|评论视频..)

京东商品评论API接口是京东开放平台提供的一套API接口,用于获取京东商城商品评论数据。通过该接口,您可以获取到商品评论的详细信息,包括评论内容、评论时间、评论者信息等。 要使用京东商品评论API接口,您需要完成以下步骤&…

C# RFB 人脸识别

C# RFB 人脸识别-CSDN博客 效果 项目 下载 源码下载

uniapp新建的vuecli项目启动报错并且打包失败的问题(已解决)

我的项目新建流程如下 运行之后就是如下报错 解决办法: 安装如下依赖: npm i postcss-loader autoprefixer8.0.0 npm run build 编译失败 安装如下依赖: npm install postcss8.2.2 最终package.json文件如下 {"name": "ls…

Antv/G2 图表坐标轴文字过长时添加省略号

// 格式化文字&#xff0c;超过长度添加省略号chart.axis(city, {label: {formatter: (text) > {// 字符太长添加省略号return text.length > 5 ? ${text.slice(0, 5)}... : text;}}})完整 demo&#xff1a; <!DOCTYPE html> <html lang"en"> &l…