系列二、IOC DI

一、IOC

1.1、概述

        IOC的中文意思是控制反转,通俗地讲就是把创建对象的控制权交给Spring去管理,以前是由程序员自己去创建、控制对象,现在交由Spring去创建对象 & 管理对象(维系对象之间的关系),使用IOC的目的是为了降低程序之间的耦合度。

 1.2、优点

集中管理对象,方便维护,降低程序之间的耦合度。

1.3、底层工作原理

xml解析 + 工厂模式 + 反射。

# 第一步:xml配置文件,配置要创建的对象
<bean id="userDao" class="org.star.UserDao"></bean># 第二步:创建工厂类
class UserFactory {public static UserDao getUserDao() {// 2.1、xml解析,获取bean中class的value值String classValue = class属性值;// 2.2、通过反射创建对象Class clazz = Class.forName(classValue);        return (UserDao)clazz.newInstance();}}

1.4、核心接口

1.4.1、概述

IOC思想是基于IOC容器完成的,IOC容器的底层就是对象工厂。

1.4.2、BeanFactory

         BeanFactory是一个工厂类,负责生产和管理各种各样的bean,是IOC容器的核心接口,也是Spring内部的使用接口,不提供给开发人员使用,它的主要职责就是生产bean以及建立各个bean之间的关系,它在加载配置文件的时候不会创建对象,在获取(创建)对象的时候才会创建对象,BeanFactory只是一个接口,并不是IOC的具体实现,Spring给出了很多种实现,如下:

1.4.3、ApplicationContext

        ApplicationContext是BeanFactory接口的子接口,提供了更多更强大的功能,一般由开发人员进行使用。加载配置文件的时候就会对配置文件中的对象进行创建,继承结构如下所示:

二、DI

2.1、概述 

        DI的中文意思是依赖注入的意思,是IOC的落地实现,是IOC不可分割的一部分,用于给bean中注入各种属性,以完成bean的初始化工作。

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

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

相关文章

NVMe-oF E-JBOF设计解析:WD RapidFlex网卡、OpenFlex Data24

OpenFlex Data24 NVMe-oF Storage Platform WD的SN840 NVMeSSD新品并没有太吸引我注意&#xff0c;因为它还是PCIe 3.0接口的&#xff0c;要知道Intel的PCIe 4.0 SSD都已经推出了。 但上面这个NVMe-oF&#xff08;NVMe over Fabric&#xff09;EBOF&#xff08;区别于普通JBO…

搭建Angular并引入NG-ZORRO组件库

作者&#xff1a;baekpcyyy&#x1f41f; 1.安装node.js 注&#xff1a;安装 16.0 或更高版本的 Node.js node官网&#xff1a;https://nodejs.org/en 2.进入angular官网 https://angular.cn/guide/setup-local 新建一个文件夹 vsc打开 打开终端 1.首先安装angular手脚架…

移动应用程序管理的内容、原因和方式

移动应用程序管理&#xff08;MAM&#xff09;是一个术语&#xff0c;指的是管理应用程序的整个生命周期&#xff0c;包括从设备安装、更新和卸载应用程序&#xff0c;除了在整个生命周期内管理设备外&#xff0c;MAM 还包括保护应用访问的数据&#xff0c;以及在设备上发现恶意…

深入理解数据结构:队列的实现及其应用场景

文章目录 &#x1f342;前言&#x1f342;队列的基本概念和特性&#x1f342;队列的实现方式️&#x1f331;顺序队列️&#x1f331;链式队列 &#x1f342;队列的基本操作及示例代码️&#x1f951;创建队列️&#x1f951;判空操作️&#x1f951;入队操作️&#x1f951;出…

docker容器与宿主机时间同步

前言 在Docker容器创建好之后&#xff0c;可能会发现容器时间跟宿主机时间不一致&#xff0c;此时需要同步它们的时间&#xff0c;让容器时间跟宿主机时间保持一致。 一、分析时间不一致的原因 宿主机采用了CST时区&#xff0c;CST应该是指&#xff08;China Shanghai Time&…

JAVA线程池原理详解

线程池的优点 1、线程是稀缺资源&#xff0c;使用线程池可以减少创建和销毁线程的次数&#xff0c;每个工作线程都可以重复使用。 2、可以根据系统的承受能力&#xff0c;调整线程池中工作线程的数量&#xff0c;防止因为消耗过多内存导致服务器崩溃。 线程池的创建 public…

AIDL 如何分片传输大量 Parcelable 数据列表

本文针对 AIDL 跨进程传输大量 Parcelable 数据所产生的问题总结出一套分片传输的解决方案&#xff0c;并分析了一下其实现的原理。 1. 概述 大家在通过 AIDL 实现跨进程数据传输的时候&#xff0c;可能会遇到数据量过大导致异常的情况&#xff0c;通常抛出的异常如下&#xf…

如何去掉图片水印不伤原图?无痕去水印教程分享!

如何去掉图片水印不伤原图&#xff1f;在电商广告设计和营销领域&#xff0c;水印已经成为一种常见的版权保护手段。不过&#xff0c;水印也给淘宝商家带来了一些困扰。那么如何去掉图片水印还能不伤原图呢&#xff0c;接下来&#xff0c;将分享简单好用的无痕去水印教程&#…

python中range函数的用法

range() 是Python的一个内置函数。语法格式为&#xff1a;range(start, stop, step) start是初始值&#xff0c;stop是最终值&#xff0c;step是步长。range()函数仅适用于整数&#xff0c;所有参数都必须是整数。步长值可以为正数或负数&#xff0c;不得为零。使用range函数时…

农田气象要素监测仪助力农业发展

随着科技的不断进步&#xff0c;现代农业已经越来越离不开科学技术的支持。其中&#xff0c;WX-NY12 农田气象要素监测仪成为了现代农业中不可或缺的一部分。这款仪器能够实时监测农田中的气象要素&#xff0c;如温度、湿度、光照、风速等&#xff0c;为农民提供更加精准的农业…

SOLIDWORKS 2024新功能之Electrical篇

SOLIDWORKS 2024 Electrical篇目录概览 • 对齐零部件 • 更改多个导轨和线槽的长度 • 过滤辅助和附件零件 • 2D 机柜中的自动零件序号 • 移除制造商零件数据 • 重置未定义的宏变量 • 使用范围缩短列表 • SOLIDWORKS Electrical Schematic 增强功能 1、对齐零部件…

解决Vscode使用git提交卡住的问题

使用Vscode的git提交代码经常会很慢/卡住。 先点击左下角&#xff0c;进入设置 找到git的配置(建议直接搜索)&#xff0c;把use Editor As commit input的勾选去掉即可解决。