Spring初识(一)

一.Spring 是什么?

首先我们来看看官网的解释
Spring 使每个人都可以更快、更轻松、更安全地进行 Java 编程。Spring 对速度、简单性和生产力的关注使其成为 世界上最受欢迎的 Java框架。
在这里插入图片描述
这里我简单的说明一下什么是spring?
我们通常所说的 Spring 指的是 Spring Framework(Spring 框架),它是⼀个开源框架,有着活跃⽽庞⼤的社区,这就是它之所以能⻓久不衰的原因。Spring ⽀持⼴泛的应⽤场景,它可以让 Java 企业级的应⽤程序开发起来更简单.
⽤⼀句话概括 Spring:Spring 是包含了众多⼯具⽅法的 IoC 容器。
接下来我们将解释这两个概念.
1.什么是容器
2.什么是Ioc

1.1 什么是容器

如果解释容器的概念的话.
百度百科给出生活中的概念,用来容纳某种物品的基本装置
在这里插入图片描述
其实我们在开发阶段中,就已经遇到过了,例如:
List/Map -> 数据存储容器
Tomcat -> web容器

1.2 什么是Ioc?

loC = Inversion of Control翻译成中文是“控制反转”的意思,也就是说Spring是一个“控制反转”的容器,怎么理解这句话呢,我们先从以下示例开始。
我会用一个例子,来解释这个Ioc机制.

1.2.1传统式开发

假如,我们现在构建一辆“车”的程序,我们的实现思路是这样的:
在这里插入图片描述
代码如下:

在这里插入图片描述

1.2.2 控制反转式程序开发

现在我们构建一辆车的思路是这样的.
在这里插入图片描述
具体代码如下:
在这里插入图片描述
在这里插入图片描述

我们来做一个总结.

在这里插入图片描述
经过这样一个流程,我们知道IoC不是一个具体的技术,它是一个思想。
用另外的一个话题说,我们做的一切操作都像是解耦操作一样,大家细细去体会就知道了.

1.3 什么spring Ioc

回到我们的主题Spring,本文刚开始咱们就讲:Spring 是包含了多个工具方法的 loC容器,这就是对Spring最核心的总结。“集成多个工具方法”这事咱们以后慢慢再讲,那如何理解"Spring是一个loC容器”这句话呢?

既然Spring 是一个 loC(控制反转)容器,重点还在“容器”二字上,那么它就具备两个最基础的功能:

  • 将对象存入到容器;
  • 从容器中取出对象。

也就是说学Spring 最核心的功能,就是学如何将对象存入到Spring 中,再从 Spring 中获取对象的过程。

Spring 是⼀个 IoC 容器,说的是对象的创建和销毁的权利都交给 Spring 来管理了,它本身⼜具备了存储对象和获取对象的能⼒。
优点:
1.解耦
2.使用更加方便(不再需要手动创建,和关注这个对象背后的依赖关系)A->B
3.更加高效

1.4 DI 概念说明

Dependency Injection的缩写 依赖注入
所谓依赖注⼊,就是由 IoC 容器在运⾏期间,动态地将某种依赖关系注⼊到对象之中。所以,依赖注⼊(DI)和控制反转(IoC)是从不同的⻆度的描述的同⼀件事情,就是指通过引⼊ IoC 容器,利⽤依赖关系注⼊的⽅式,实现对象之间的解耦.
当然我们还是说人话来解释一下:
将依赖的某个对象注入到当前类当中的这个行为就叫做依赖注入。

总结

ioC是“目标”也是一种思想,而目标和思想只是一种指导原则,最终还是要有可行的落地方案,而DI就属于具体的实现。
比如说我今天心情比较好,吃一顿好的犒劳犒劳自己,那么“吃一顿好的”是思想和目标(是loC) ,但最后我是吃海底捞还是杨国福?这就是具体的实现,就是 DI,

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

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

相关文章

[JavaScript游戏开发] 2D二维地图绘制、人物移动、障碍检测

系列文章目录 第一章 2D二维地图绘制、人物移动、障碍检测 第二章 跟随人物二维动态地图绘制、自动寻径、小地图显示(人物红点显示) 文章目录 系列文章目录前言一、列计划1.1、目标1.2、步骤 二、使用步骤2.1、准备素材(图片):草坪、人物(熊猫)、障碍(石头)2.2、初…

Python对Excel不同的行分别复制不同的次数

本文介绍基于Python语言,读取Excel表格文件数据,并将其中符合我们特定要求的那一行加以复制指定的次数,而不符合要求的那一行则不复制;并将所得结果保存为新的Excel表格文件的方法。 这里需要说明,在我们之前的文章Pyt…

〖Python网络爬虫实战㉜〗- 协程基本原理

订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+ python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,订阅本专栏前必读关于专栏〖Python网络爬虫实战〗转为付费专栏的订阅说明作者:爱吃饼干的小白鼠…

【Ubuntu报错】command not found: nmcli

如果在你的Linux系统上运行nmcli时出现"command not found"错误,这可能意味着nmcli命令行工具没有安装或没有在系统的环境变量中找到。 nmcli命令通常随着NetworkManager软件包一起提供。为了解决这个问题,你可以尝试以下步骤: 如…

SpringBoot Cache 整合 Redis 缓存框架

文章目录 引入依赖配置 Redis启动类注解注解开发CacheableCachePutCacheEvict 注解属性cacheNames/valuekeykeyGeneratorconditionunlesscacheManagersync SpEL 表达式 SpringBoot 提供了 SpringBootCache 框架作为 SpringBoot 的缓存统一框架,使用 SpringBootCache…

php连接上mysql数据库该的配置方法

用mysql官方的管理工具workbench: 打开导出界面后,下一步,选择csv格式,导出后excel就能打开了 如果你需要在程序代码中导出,需要找到对应代码的excel处理库。 如php 的 phpExcel( 最新版已更名为 phpoffice/phpspread…

selenium WebDriver 中的几种等待--sleep(),implicitly_wait(),WebDriverWait()

目录 强制等待:sleep() 隐式等待:implicitly_wait() 显示等待:WebDriverWait() 与until()或者until_not()方法结合使用 WebDriverWait与expected_conditions结合使用 显示等待,自定义等待条件 强制等待:sleep() import time sleep(5) #等待5秒 设置固定休眠时间&#x…

14matlab数理统计 多项式的求根和根据根求多项式(matlab程序)

1.简述 分享一下通过多种不同的方法计算多项式的根。 数值根 使用代换法求根 特定区间内的根 符号根 数值根 roots 函数用于计算系数向量表示的单变量多项式的根。 例如,创建一个向量以表示多项式 x2−x−6,然后计算多项式的根。 p [1 -1 -6]; r …

Prometheus节点监控及hadoop集群监控

背景:我司长期苦于CM6.3后收费问题,这次领导痛下决心,决定要自己开发一套大数据管理平台,监控就是其中一部分,本文主要阐述,话不多说,先看效果。 1.监控组件Prometheus 1.1上传Prometheus包 [root@bigdb01 ~]# rsync root@172.16.1.247/data/fan/install/native/09.…

uni.app如何检测小程序版本更新以及上线后如何关闭全局打印

uni.app如何检测小程序版本更新以及上线后如何关闭全局打印 检测小程序版本更新关闭全局打印 检测小程序版本更新 App.vue 入口文件中 添加如下代码 //检测小程序版本是否更新const updateManager wx.getUpdateManager()updateManager.onCheckForUpdate(function(res) {// 请求…

DuiLib中的list控件以及ListContainerElement控件

文章目录 前言1、创建list控件2、创建 ListContainerElement 元素,并添加到 List 控件中,这里的ListContainerElement用xml来表示3、在 ListContainerElement 元素中添加子控件 1、List控件2、ListContainerElement控件 前言 在 Duilib 中,List 控件用于…

【批量将视频转为图像序列】

批量将视频转为图像序列 代码如下,代码中带有解释: # 导入所需要的库 import cv2 import os import numpy as np# 多个视频所在的路径 datasets_path ["/home/y/Code/数据集/1/007f.mp4","/home/y/Code/数据集/1/05f.mp4","/…

UI界面中的图标设计趋势与最佳实践

作为UI设计师,在日常的工作中,避免不了做图标规范。今天跟大家聊一聊,UI设计中的图标设计。 规范的重要性不用多说了,没有规范多个设计师绘制的图标会有很多差异,描边粗细、角度、圆角度等等。今天的文章和大家聊一下…

ChatGPT 的局限性是什么?

ChatGPT 的局限性是什么? 尽管看起来非常令人印象深刻,但 ChatGPT 仍然存在局限性。此类限制包括无法回答以特定方式措辞的问题,因为它需要重新措辞才能理解输入的问题。更大的限制是它提供的响应缺乏质量 - 有时听起来似是而非,…

leetcode303. 区域和检索 - 数组不可变 前缀和

https://leetcode.cn/problems/range-sum-query-immutable/ 给定一个整数数组 nums&#xff0c;处理以下类型的多个查询: 计算索引 left 和 right &#xff08;包含 left 和 right&#xff09;之间的 nums 元素的 和 &#xff0c;其中 left < right 实现 NumArray 类&…

Stable Diffusion - 编辑生成 (OpenPose Editor) 相同人物姿势的图像

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/131818943 OpenPose Editor 是 Stable Diffusion 的扩展插件&#xff0c;可以自定义人物的姿势和表情&#xff0c;以及生成深度、法线和边缘图等信…

vue 集成tinymce2实现图片,视频以及文件的上传

vue 集成tinymce2实现图片&#xff0c;视频以及文件的上传 1. 安装插件 &#xff08;1&#xff09;安装tinymce npm install tinymce -S &#xff08;2&#xff09;安装tinymce-vue npm install tinymce/tinymce-vue3.0.1 -S 2. 复制静态文件到public目录 资源下载路径&…

LangChain(5)Conversational Agents

Large Language Models (LLMs) 在语义知识方面表现不错&#xff0c;但也有一些不足&#xff0c;如&#xff1a;不能正确计算数学公式、无法获取最新知识新闻 通过 Agents 可以赋予 LLMs 更多能力&#xff0c;让LLM能够计算、上网查询 agent 简单使用 from langchain import …

Django入门

前言 早就想入门后端了&#xff0c;自己倒是用过Flask&#xff0c;对于常规网站来说Django更完善一些。稍微学习下&#xff0c;能够做一些简单业务处理就好啦。 跟着官方文档学习的&#xff0c;这里做一下记录。纯纯拿来用&#xff0c;不去研究原理与架构&#xff0c;无脑跟着…

MyBatis-Plus的数据安全保护

文章目录 一、介绍二、生成密钥三、加密四、配置文件内容使用密文五、命令行参数 MyBatis-Plus官网https://baomidou.com/ 一、介绍 对配置文件内容加密&#xff0c;3.3.2开始支持使用AES加密算法实现原理&#xff1a;SafetyEncryptProcessor implements EnvironmentPostProc…