柳州网站seo做建设网站的活的兼职

diannao/2026/1/16 0:21:47/文章来源:
柳州网站seo,做建设网站的活的兼职,网站建设个人信息英文翻译,广西住房和城乡住建厅官网文章目录 一、初识 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/diannao/91657.shtml

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

相关文章

湛江免费制作网站做淘宝客网站能有效果吗

甲骨文公司近九年前完成了收购Sun Microsystems的过程。 那是当时的大新闻,今天也宣布了类似的大新闻: IBM和Red Hat已同意IBM收购Red Hat 。 IBM主页面宣布“ IBM收购Red Hat”。 然后它说:“这将改变一切。” 这项宣布的收购很可能会使许多…

网站备案核实单制作网页的代码实例

目录 0.为什么mybatis的foreach比JDBC的addBatch慢 1.引入依赖 2.Controller层 3.Service层 4.Utils工具类 5.自定义监听器 6.实体类 7Mapper层 不用Mybatis的原因就是因为在大量数据插入的时候jdbc性能比mybatis好1. 首先分批读取Excel中的数据 这一点EasyExcel有自己…

设计网站界面做公司网站合同

【📊plt.bar绘制条形图】:从入门到精通,只需一篇文章!【Matplotlib】 利用Matplotlib进行数据可视化示例 🌵文章目录🌵 🔍 一、初识plt.bar:条形图的基本概念💡 二、plt.…

一份电子商务网站建设规划书wordpress 原理

今天在博客园开启第一篇,附上我多年工作的研究总结以表诚意。 此文已收入UXPA大会文集,出版于四川大学出版社。 《GUI阅读字号和触点面积设计》 --可用性设计理论研究与实践案例 作者刘玲 前华为UCD中心交付经理 277169188qq.com 摘要: 本文演绎论证了当…

wordpress自适应移动端seo自己怎么做

一、定义 覆盖索引是指查询使用了索引,并且需要返回的列,在该索引中已经全部能够找到。 二、例子 1. id为主键,默认是主键索引。 2. name字段为普通索引。 select * from tb_user where id 1 覆盖索引 select id,na…

娄底企业网站建设制作平乡网站制作

1.自我介绍 略 2.专业主修的课程 略 3.xss漏洞的类型,原理及防御 原理,服务器对用户的输入过滤不严格,将用户的输入当作Javascript代码执行并返回给客户端。 防御,输入和url参数过滤,HTML实体编码转义特殊字符。…

北京著名网站设计公司做网站要不要学ps

文章目录 前言1. 准备相关软件环境1.1 获取 ISO 镜像包1.2 VMware 的安装 2. 使用 VMware 安装 CentOS3. 初始化虚拟机4. 虚拟机网络的设置4.1 虚拟机的三种网络连接模式桥接模式NAT 模式仅主机模式 4.2 如何更改网络设置 5. 远程访问虚拟机的方法5.1 使用 cmd 进行访问5.2 使用…

长春可做微网站的公司昆明seo博客

选择科目测一测我能上哪些大学选择科目领取你的专属报告>选择省份关闭请选择科目确定v>四川省内的公办大学一直以来都是历年高考生及家长关注的重点,本篇文章我将针对“四川省有多少所二本公立大学?有哪四川省内的公办大学一直以来都是历年高考生及…

确定网站推广目标本地wordpress环境

实现一个简单的基于码云(Gitee) 的 StorageIntro上次在 asp.net core 从单机到集群 一文中提到存储还不支持分布式,并立了一个 flag基于 github 或者 开源中国的码云实现一个 storage于是这两天就来填坑了。。实现了一个简单的基于开源中国的码云的 storage准备工作…

公司注册网上核名网站腾讯企业邮箱入口网页版

毛利 等于收入纯利 等于利润 按照:利润=收入-成本-费用 收入:收到的现金、支票、签单金额成本:买材料、酒水、电、工资、等费用:日租金、桌椅、碗、盘子等摊销、税金等等 ------------------------------------------…

云指建站平台搜外网 seo教程

这个问题是说数据库user的password字段长度超出,修改长度后, 硬核方法删除migrations 文件夹 然后删除数据库中模型表格 python manage.py db init python manage.py db migrate python manage.py dbupgrate 三连击后,在重新运行后方能生…

12306网站能不能用银河二计算机做服务器啊慢得要死网页网站

转载:http://www.cnblogs.com/lizhenghn/p/3619091.html 在前面我们介绍了循环服务器,并发服务器模型。简单的循环服务器每次只能处理一个请求,即处理的请求是串行的,效率过低;并发服务器可以通过创建多个进程或者是线…

钦州住房和城乡建设局网站wordpress id重置密码忘记

SpringBootWeb请求响应 前言 在上一次的课程中,我们开发了springbootweb的入门程序。 基于SpringBoot的方式开发一个web应用,浏览器发起请求 /hello 后 ,给浏览器返回字符串 “Hello World ~”。 其实呢,是我们在浏览器发起请求…

东莞美容网站建设中俄最新军事新闻

使用winscp实现图形化拖动的方式互传文件. 1.下载winscp软件并安装,官方地址: https://winscp.net/eng/index.php 2.打开软件: 文件协议选择scp,输入linux服务器的IP和端口号,然后输入你的用户名和密码就可以登陆了。…

氧os哪个网站做的最好深圳网站设计优刻

IlIlIlIl学号16082202032016-2017学年 第一学期《Windows程序设计》课程设计报告题目:拼图游戏设计专业:班级:姓名:指导教师:成绩:学院二0—六年十一月十五日TOC \o "1-5" \h \z \o "Current Document" 仁设计目的与要求31. 111 目白勺????…

访问国外网站好慢安康电商网站建设

msvcr110.dll文件是一个动态链接库(DLL)文件,由Microsoft Corporation开发。它是Visual C Redistributable for Visual Studio 2012的必要部分,包含了C运行时库函数的代码,这些函数为执行C/C应用程序提供了基础服务。这…

互联网网站文化e福州怎么代缴医保

目录 一、安装 二、常用目录 三、常用指令 四、用户指令 五、ssh与scp 六、服务相关 七、Python与Pycharm 八、Vim编辑器 九、Ubuntu22下使用Mysql 十、Ubuntu22下使用mongodb 十一、Ubuntu22下使用redis Ubuntu是一个基于Debian的开源操作系统,由Canoni…

html设计素材网站中华南大街网站建设

我的系统是ubuntu20.04,ros2的版本是humble,当运行gazebo仿真时,运行 ros2 launch gazebo_ros gazebo.launch.py命令,会出现以下问题: 此时,这个页面会卡死在第六行,gazebo也不会打开 但最后单…

宜州市住房保障和城乡建设局网站最新军事战争新闻

多年来,我曾在许多Java开发人员访谈中担任小组成员。 之前,我曾写过一篇标题为“成功进行软件工程师技术面试的7大技巧”的文章,其中涵盖了很少的一般准则。 在本文中,我将分享一个思维导图,其中包含Java开发人员访谈中…

用python做网站不常见酒泉网站建设专家

系列 Django 学习教程-介绍与安装-CSDN博客 欢迎来到第Djagno学习教程第二章Hello World 入门案例。 在本教程中,我将引导您完成django的Hello World入门案例。 让我们开始吧! 版本 Django 5.0Python 3.10 创建项目 安装 Django 之后&#xff0…