做建设网站的活的兼职百度推广竞价开户

news/2025/9/28 4:20:54/文章来源:
做建设网站的活的兼职,百度推广竞价开户,整形网站整站源码,德兴高端网站设计文章目录 一、初识 Spring1.1 什么是 Spring1.2 什么是 容器1.3 什么是 IoC 二、对 IoC 的深入理解2.1 传统程序开发方式存在的问题2.2 控制反转式程序的开发2.3 对比总结 三、对 Spring IoC 的理解四、DI 的概念4.1 什么是 DI4.2 DI 与 IoC的关系 一、初识 Spring 1.1 什么是… 文章目录 一、初识 Spring1.1 什么是 Spring1.2 什么是 容器1.3 什么是 IoC 二、对 IoC 的深入理解2.1 传统程序开发方式存在的问题2.2 控制反转式程序的开发2.3 对比总结 三、对 Spring IoC 的理解四、DI 的概念4.1 什么是 DI4.2 DI 与 IoC的关系 一、初识 Spring 1.1 什么是 Spring Spring 是一个开源的轻量级 Java 框架旨在简化 Java 应用程序的开发。它提供了一个全面的编程和配置模型用于构建各种类型的应用包括企业级应用和独立的 Java 应用。Spring 的设计理念是基于依赖注入Dependency Injection和面向切面编程Aspect-Oriented Programming使得应用开发更加模块化、灵活和易于维护。 用一句话概括 Spring 就是Spring 是一个包含了众多工具的 IoC 容器。 1.2 什么是 容器 所谓容器就是能够盛放东西的器皿就好像水杯一样。而 Spring 就是一个容器它的功能就是负责存储和管理应用中的各个组件Bean然后在使用的时候从 Spring 中取出需要的 Bean 对象。 1.3 什么是 IoC IoC即控制反转Inversion of Control是 Spring 框架的核心理念之一。它将应用程序的控制权从开发人员的手中反转由 Spring 容器负责管理对象的生命周期以及依赖关系。在传统的程序设计中开发人员需要负责手动创建和管理对象但是在 IoC 容器中开发人员只需要定义组件Bean的配置元数据由容器负责实例化、装配和管理这些组件。 二、对 IoC 的深入理解 如果初次理解 IoC可能会觉得很困难可以通过下面的例子帮助我们理解 IoC 的作用。 假如现在需要使用程序来模拟一个简单制造汽车的过程其实现思路如下 如果要造汽车Car首先需要有车身Framework如果需要造车身Framework首先就需要有地盘Bottom如果需要造地盘Bottom首先就需要有轮子Tire。 上述过程不难发现存在一个依赖链的关系首先通过传统程序的开发方式来感受一下其存在的问题。 2.1 传统程序开发方式存在的问题 下面是用传统方式编写的代码 class Tire {private Integer size 17;public void init(){System.out.println(do tire: size size);} }class Bottom {private Tire tire;public Bottom(){this.tire new Tire();}public void init(){tire.init();System.out.println(do bottom);} }class Framework {private Bottom bottom;public Framework(){bottom new Bottom();}public void init(){bottom.init();System.out.println(do framework);} }class Car {private Framework framework;public Car(){framework new Framework();}public void init(){framework.init();System.out.println(do car);} }public class Tradition {public static void main(String[] args) {Car car new Car();car.init();} }在上面的传统写法中可以发现每个类之间的耦合度非常高并且每个类都需要管理它所依赖的对象即掌握着其依赖对象的控制权。此时如果用户的需求改变了使用的轮子Tire不再是固定的尺寸而是需要由用户自己输入尺寸的大小此时Tire类的代码需要更改为 class Tire {private Integer size 17;public Tire(int size){this.size size;}public void init(){System.out.println(do tire: size size);} }此时发现不改不要紧但是一改问题就来了由于各个类之间的高耦合性使得后续所依赖前者的代码都需要进行修改。 class Bottom {private Tire tire;public Bottom(int size){this.tire new Tire(size);}public void init(){tire.init();System.out.println(do bottom);} }class Framework {private Bottom bottom;public Framework(int size){bottom new Bottom(size);}public void init(){bottom.init();System.out.println(do framework);} }class Car {private Framework framework;public Car(int size){framework new Framework(size);}public void init(){framework.init();System.out.println(do car);} }如果要后续要继续增加 Tire 类的属性例如color此时就还要需要从头来进行修改。那么如何解决这个缺陷呢 上次代码出现这个缺陷的根本原因就在于当前类将自己所依赖的类的控制权掌握在了自己的手中即在自己类的内部调用的所依赖类的构造方法。因此解决这个问题的方法也非常简单那就是不在自己的内部代码中创建所依赖的对象而是通过参数传递的方式获取这个依赖对象这就是控制权转移的思想即 IoC。 2.2 控制反转式程序的开发 下面是转移控制权的代码写法即将当前类所依赖的对象通过参数的方式进行传入 class Tire {private Integer size 17;public Tire(int size) {this.size size;}public void init() {System.out.println(do tire: size size);} }class Bottom {private Tire tire;public Bottom(Tire tire) {this.tire tire;}public void init() {tire.init();System.out.println(do bottom);} }class Framework {private Bottom bottom;public Framework(Bottom bottom) {this.bottom bottom;}public void init() {bottom.init();System.out.println(do framework);} }class Car {private Framework framework;public Car(Framework framework) {this.framework framework;}public void init() {framework.init();System.out.println(do car);} }public class IoC {public static void main(String[] args) {Tire tire new Tire(18, red);Bottom bottom new Bottom(tire);Framework framework new Framework(bottom);Car car new Car(framework);car.init();} } 此时如果用户需求又发生了改变要求轮子 Tire 的颜色也要自己来挑选此时更改的代码如下 class Tire {private Integer size 17;private String color;public Tire(int size, String color) {this.size size;this.color color;}public void init() {System.out.println(do tire: size size , color color);} } 此时只需要修改 Tire 类和创建 Tire 对象的代码而不需要对其他代码进行修改。可以发现即使底层类的改变也不会影响到整个调用链的改变这样就实现了代码的解耦从而实现了更加灵活、通用的程序设计方式。 2.3 对比总结 以下是传统代码和 IoC 形式代码的调用过程 通过对比两种代码的实现方式不难发现 两种代码中类的创建顺序是相反的 传统代码的创建顺序是由顶层 Car 类创建到底层 Tire 类即Car - Framework - Bottom - Tire而 IoC 形式代码的创建顺序则是由底层 Tire 类创建到顶层 Car 类即Tire - Bottom - Frame - Car。 传统代码中当前类掌握着自己所依赖对象的控制权耦合度非常高一旦底层代码修改了整个调用链的代码都会修改。IoC 形式的代码中当前类通过参数传递的方式将对所依赖对象的控制权进行反转即不再有自己掌控此时无论底层代码如何修改也不会对整个调用链上的代码造成影响。 三、对 Spring IoC 的理解 “Spring 是一个 包含众多工具的 IoC 容器” 这句话的理解非常重要因为它揭示了 Spring 框架最核心的功能和优势。在这里我们可以把 Spring IoC 容器比喻成一个大大的容器用来存放应用程序中的各种对象Bean。这个容器不仅负责对象生命周期的管理还实现了对象之间的依赖注入DI从而实现了控制反转。 既然 Spring 是容器那么它的核心功能就可以分为两个 1. 将对象存入容器 程序员首先需要创建应用程序中的各种对象Bean这些对象代表应用程序中的不同组件和功能模块。然后通过配置文件如XML、注解或者 Java 配置类告诉 Spring IoC 容器如何创建这些对象以及它们之间的依赖关系。Spring IoC 容器会根据配置信息在应用程序启动的时候负责实例化这些对象并存放到容器中从而完成对象的创建和组装过程。 2. 从容器中取出对象 一旦对象被存入了 Spring IoC 容器中它们就可以在应用程序的其他部分被获取和使用。程序员不需要显示地创建对象而是从 Spring 容器中直接获取已经创建好的对象来使用。通过依赖注入的方式Spring IoC 容器会在合适的时候将依赖的对象自动注入到需要它们的地方。 总的来说Spring IoC 容器负责管理对象的创建、组装和依赖关系开发人员只需关注对象的定义和配置。通过将对象存入容器并从容器中获取对象Spring 实现了对象的控制反转使得应用程序的开发更加简洁、灵活和易于维护。这也是 Spring 框架的核心之一为开发者提供了一个强大且高度可定制的开发平台。 四、DI 的概念 4.1 什么是 DI 依赖注入Dependency InjectionDI是一种实现 IoC 的具体技术它是 IoC 容器的一种表现形式。在 DI 中对象之间的依赖关系不再有类自己创建和管理而是有外部容器如 Spring来负责注入依赖的对象。简单来说DI 就是将一个对象的依赖关系交给外部容器来处理从而实现对象之间的解耦。 在 DI 中通常由三种注入方式 构造方法注入Constructor Injection:通过构造函数接收依赖对象这是最常见的注入方式。Setter 方法注入Setter Injection通过Setter方法设置依赖对象。属性注入Field Injection通过属性的方式注入依赖对象。 DI 使得对象的依赖关系从代码中移出变得可配置和灵活。通过使用DI我们可以在应用程序的不同部分之间实现松耦合提高代码的可测试性、可维护性和可扩展性。 4.2 DI 与 IoC的关系 DI依赖注入和 IoC控制反转是紧密相关的概念通常同时被提及它们之间的关系可以概括为 IoC 是一种设计思想它将应用程序的控制权从代码内部转移到外部容器。通过 IoC对象的创建和依赖关系的管理被反转交由容器来负责管理而不是由代码显示的控制。DI 是实现 IoC 的一种具体技术手段它是 IoC 的一种表现形式。通过 DI对象之间的依赖关系由外部容器来注入而不是由对象自己来创建和管理依赖。 因此DI 是 IoC 的一部分它是实现 IoC 的重要手段。Spring 框架正是以 IoC 和 DI 为核心提供了强大的 IoC 容器和依赖注入机制从而实现了各种功能如依赖管理、AOP、事务管理等。通过 IoC 和 DISpring 框架实现了松耦合、可配置和可扩展的应用程序开发。

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

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

相关文章

最新73种暴利产品竞价单页网站制作带订单后台系统模板access2003做网站

和前面的字符串逆向输出有异曲同工之妙 第一位和最后一位交换位置,然后用比大小循环 那么接下来修改一下这个程序,我们接下来解释一下p的概念 画图解释: 在最前面的 定义的时候,我们将p(0)定义在了1上&…

网站开启gzip广州市网站建设分站价格

卸载一切到网卡,解放 cpu,兜售自己的设想:功能越来越多,吞吐越来越大的网卡。万物皆关联,吞吐越大的网卡反而更闯祸。范雅各布森的大历史视野不是每个工程师都具备的,更何况经理们。 事实是,网…

怎么添加网站白名单临淄找工作信息网

「Nginx」Nginx配置详解 参考文章1、正向代理和方向代理2、指定域名允许跨域 参考文章 1、Nginx反向代理 2、nginx配置详解 3、Nginx服务器之负载均衡策略(6种) 1、正向代理和方向代理 2、指定域名允许跨域 map $http_origin $allow_cors {default 1;…

做机器设备的网站网站建设需要哪些技术

一、 查看所有进程占用的端口 在开始-运行-cmd,输入:netstat –ano可以查看所有进程 二、查看占用指定端口的程序 当你在用tomcat发布程序时,经常会遇到端口被占用的情况,我们想知道是哪个程序或进程占用了端口,可以用该命令 ne…

做运动特卖的网站青田网站做服装找工作

技术员联盟win11旗舰版64位系统v2021.07是微软最新推出的电脑操作系统,这款系统带来全新的功能,如任务栏居中,右键刷新等等,采用最实用、最纯粹的系统,轻松满足用户多样化的系统服务需求,用户可以在本站一键…

网站动态标签动漫做h免费网站

python中的布尔类型和条件语句的学习 1.布尔(bool)类型的定义: 布尔类型的字面量:True表示真(是、肯定) False表示假(否、否定) True本质上是一个数字记作1,False记作0 …

哈尔滨网站建设咨询最安全的软件下载网站

前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏…

网站建设贴吧寮步镇网站建设

本文属于架构训练营学习笔记系列:模块3的案例讲解 总的来说,这篇从更高的维度去讲,而不是关注消息队列的常见问题:比如消息如何发送,消息如何不丢失 ,消息如何不重复。总体上分为2部分:利益干系…

可以在自己家做外卖的网站东营网上房地产

本文实例讲述了Python创建对称矩阵的方法。分享给大家供大家参考,具体如下:对称(实对称)矩阵也即:step 1:创建一个方阵>>> import numpy as np>>> X np.random.rand(5**2).reshape(5, 5)>>> Xarray([…

php网站数据库修改网站设计制作收费明细

并查集的优化 在上一节了解到并查集的快速查询,合并,判断归属组等操作,虽然这些操作都非常方便,但是在数据量较大的情况下,并查集的效率并不算高: 上一节中实现代码中使用的合并方法(merge,AP…

上海网站建设培训班设计自己的签名

思路 本题也是动态规划的解法,dp[i][j]代表的意思就是word1中0~i的字符串和word2中0 ~ j的字符串相等需要的步数,也是通过判断尾部字符是否相等的方式,如果相等的话也就不需要改动了取dp[i-1][j-1]的步数就行,如果不相等的话需要找…

手机html5网站源码网络服务商提供的adsl上网帐号及口令

目录 一、moments_object_model_3d例程二、moments_object_model_3d函数三、效果图一、moments_object_model_3d例程 这个例子说明了如何使用moments_object_model_3d运算符来将3D数据与x、y、z坐标轴对齐。在实际应用中,通过3D传感器获取的物体模型可能具有一个与物体主轴不…

检测网站名 注册施工企业项目经理部管理人员对外行为的法律后果

之前有一篇文章是学习了字符和字符串的,可以与之结合学习:【C语言进阶深度学习记录】十二 C语言中的:字符和字符串 文章目录1 字符串的概念1.1 字符串与字符数组1.2 字符数组与字符串代码分析2 字符串字面量2.1 字符串字面量的本质的代码分析…

网站建设意见建议表检测WordPress恶意代码插件

随着科技的不断发展,增强现实(AR)技术在不同领域展现出了巨大的潜力。AR导览小程序作为其中的一种应用形式,为用户提供了全新的观赏和学习体验。然而,开发一款高质量的AR导览小程序需要投入大量的时间、人力和技术资源…

网站被k换域名 老域名能不能跳转yasee119最新域名是什么

一:缓存雪崩 我们可以简单的理解为:由于原有缓存失效,新缓存未到期间 (例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了&#xff…

大气集团网站模板成都网站建设创意

OpenCV安装 OpenCV,全称Open Source Computer Vision Library,是一个开源的计算机视觉库,它包含了大量的图像处理函数和计算机视觉算法。为了更好地学习和应用OpenCV,首先需要将其正确地安装到我们的计算机上。以下是一份关于Ope…

网站建设合同属于技术服务合同吗网站浏览器兼容性问题吗

最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客 每一题都含有详细的解题思路和代码注释,精选c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,发现新题及时跟新。 题目描述 给定一个由多个…

创建个人网站制作流程步骤深圳集团网站建设案例

企业内容管理-互联网应用 当你第一次听到企业内容管理这个名字,很容易联想到ERP这种复杂无比的系统。实际上也确实如此,目前几大主要的ECM系统都是复杂无比,所以我想从互联网应用,一般网民可以使用的角度来谈谈企业内容管理。 从…

收费网站解决方案昆明seo关键字推广

PrimeKG:为精准医学分析设计的多模态知识图谱 PrimeKG简介数据资源和覆盖范围构建方法和技术细节PrimeKG多模态知识图谱的概览构建PrimeKG的过程PrimeKG 数据 多模态特性和临床应用PrimeKG 设计逻辑 论文:https://www.nature.com/articles/s41597-023-01…

学习做网页的网站ps网站切图教程

同步阻塞 同步非阻塞 异步阻塞 异步非阻塞 在当什么是同步和异步,阻塞与非阻塞的概念还没弄清楚之前,更别提上面这些组合术语了,只会让你更加困惑。 同步和异步 同步和异步其实指的是,请求发起方对消息结果的获取是主动发起…