南京做网站的网络公司品牌策划网站推荐

张小明 2026/1/13 22:03:15
南京做网站的网络公司,品牌策划网站推荐,wordpress搜索ajax,wordpress侧边栏 代码IOC在Spring当中被称之为控制反转#xff0c;可以说是java生态当中的一个非常重要的底层思维#xff0c;而控制反转这一思想能大大帮助程序解耦#xff0c;而依赖注入也就是DI是实现IOC的一种手段#xff0c;帮助java完成这样的一套思维逻辑#xff0c;因此这两点在面试当…IOC在Spring当中被称之为控制反转可以说是java生态当中的一个非常重要的底层思维而控制反转这一思想能大大帮助程序解耦而依赖注入也就是DI是实现IOC的一种手段帮助java完成这样的一套思维逻辑因此这两点在面试当中不可谓不重要今天小编就和大家来详细聊一聊这一块内容希望大家能从中有所收获。1.IOC的概念IOC常常被称之为控制反转而控制指的就是控制对象的创建过程反转则反转的是对象的创建主体由程序员转变为容器。而在Spring当中我们的容器实际上就是一个单例工厂当中的一个个对象实际上就是bean我们不需要去真正的创建一个对象而是定义一个对象的创建过程而创建的权力我们就交给容器来负责。2.IOC有什么作用在Spring的工程启动之后我们的容器也就是单例工厂就会被初始化而在容器当中的bean对象就会被实例化。而这样我们就会发现通过这样一套机制我们bean对象的实例化由运行时期提前到了启动时期。而在这样的一套流程之下假设类与类出现了依赖或者其他的问题我们就能提早发现程序当中的问题并且解决问题。同时我们将创建对象的权力交给容器让容器帮助我们去实现创建但是假设创建对象的这个过程要交给程序员自己来进行管理我们每次使用一个对象都要去new一个新的对象这样就会造成大量的对象被创建在这样的情况之下就会频繁的触发GC的垃圾回收还可能出现OOM(内存溢出)的问题。而容器也可以帮助我们实现解耦而这样我们的单例对象bean就只依赖抽象的接口而我们只要将实体类注入到容器当中再让容器帮助我们进行依赖注入即可这样代码当中相互依赖的单例bean不需要new任何一个实现高层模块与低层模块没有直接的关联而是只依赖于底层模块对应的抽象接口这样就实现了最大程度上的解耦 。3.依赖注入DI依赖注入是一种设计模式是实现IOC的核心手段它的核心思想是对象不自己创建它所依赖的对象而是由外部注入进来。一般有三种注入方式分别是1,构造器注入依赖通过构造函数一次性传进来对象实例化后即为最终状态。天然支持final线程安全、不可变。单元测试时new即可无需容器。循环依赖会启动即报错。// ① 服务接口 public interface Engine { String start(); } // ② 服务实现 Service public class V8Engine implements Engine { public String start() { return V8 引擎轰鸣; } } // ③ 调用者 RestController RequestMapping(/car) public class CarController { private final Engine engine; // 1. 加 final 强制构造填充 public CarController(Engine engine) { // 2. 只有一个构造器Spring 自动注入 this.engine engine; } GetMapping(/run) public String run() { return engine.start(); } }2.Setter注入通过setter方法把依赖“塞”进去运行期可更换。对象可变多线程环境下需自己保证同步。测试时必须手动调用 setter。因允许为空IDE 无法静态提示缺失依赖。// ① 服务接口 public interface Battery { String level(); } // ② 服务实现 Service public class LiBattery implements Battery { public String level() { return 锂电池电量 88%; } } // ③ 调用者 RestController RequestMapping(/bike) public class BikeController { private Battery battery; // 1. 非 final可变的 Autowired // 2. 写在 setter 上更直观 public void setBattery(Battery battery) { this.battery battery; } GetMapping(/power) public String power() { return battery.level(); } }3.字段注入直接在字段上加AutowiredSpring 通过反射赋值代码量最少。无法使用final也不能在构造函数里做校验。单元测试必须启动 Spring 容器或使用反射工具。循环依赖时 Spring 会悄悄生成代理把设计问题拖到运行时。// ① 服务接口 public interface Motor { String spin(); } // ② 服务实现 Service public class BrushlessMotor implements Motor { public String spin() { return 无刷电机静音旋转; } } // ③ 调用者 RestController RequestMapping(/scooter) public class ScooterController { Autowired // 1. 直接打在字段上省代码 private Motor motor; // 2. 没有 setter/构造器痕迹 GetMapping(/go) public String go() { return motor.spin(); } }在这里我们并不太推荐基于字段注入更推荐构造器注入虽然基于字段注入的代码简洁方便但会出现不能注入final修饰空指针异常等等问题。今天的分享就到这里了希望这篇博客能给你一些帮助让你对关于IOC和依赖注入的问题得到进一步的提升在面试的时候能从容面对面试官。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

快乐麻花网站源码帝国小说网站模板

作为计算机专业毕业的过来人,我始终觉得:CTF 比赛是大学生把课本知识落地成硬技能的最佳载体。 刚上大二时,我还是个只会敲基础代码、对 网络安全停留在课本概念的小白,靠着 3 次参赛经历,不仅吃透了操作系统、计算机…

张小明 2026/1/6 17:06:20 网站建设

购物类网站建设方案wordpress 表单验证

第一章:C#跨平台日志监控概述在现代软件开发中,日志监控是保障系统稳定性和可维护性的关键环节。随着 .NET Core 和 .NET 5 的推出,C# 应用已实现真正的跨平台运行,能够在 Windows、Linux 和 macOS 上无缝部署。这一特性使得构建统…

张小明 2026/1/11 1:34:55 网站建设

慕课网网站建设目的网站开发视频教程百度云

从零开始:用三极管点亮一颗LED,不只是“亮”那么简单你有没有试过直接用单片机的IO口驱动一个LED?很简单——接个电阻、连上电源,代码里写一行digitalWrite(HIGH),灯就亮了。但当你想同时控制5个、10个甚至更多LED时&a…

张小明 2026/1/6 13:55:04 网站建设

涟水网站开发公司点击查看莱芜都市网旗下论坛

在数字化转型中,信息部的同事常被灵魂拷问:“我们已经有ERP了,为什么还要投WMS、MES、OA?” 这背后,实则是企业对各系统边界的普遍困惑。这里,我用三个最经典的业务场景,抛开技术参数&#xff0…

张小明 2026/1/10 22:56:07 网站建设

做网站的数据库的步骤qq是哪个公司开发出来的

终极指南:快速实现无proto文件的Protobuf数据解码 【免费下载链接】protobuf_decoder 项目地址: https://gitcode.com/gh_mirrors/pr/protobuf_decoder 在现代数据交互场景中,Protobuf作为高效的序列化协议被广泛应用,但缺乏.proto定…

张小明 2026/1/11 4:06:19 网站建设

怎么用文本做网站企业门户网站源码

Avizo深度配置指南:Linux多媒体键的美化利器 【免费下载链接】avizo A neat notification daemon 项目地址: https://gitcode.com/gh_mirrors/avi/avizo Avizo作为一款简洁高效的通知守护进程,专门为Linux桌面用户提供多媒体键的视觉反馈体验。这…

张小明 2026/1/6 23:31:19 网站建设