网站制作难不难网络营销专升本对口专业

张小明 2026/1/13 12:39:02
网站制作难不难,网络营销专升本对口专业,wordpress底部版权插件,个人网站 备案 备注至此我们已经学完spring中最大两个的特性之一IoC 为什么要有Ioc#xff1f; 在传统的项目中我们发现我们的程序通过new的方式来创建对象的时候#xff0c;耦合度较高#xff0c;下层改变了什么#xff08;比如说换了个数据库#xff09;#xff0c;上层的代码就要跟着改变…至此我们已经学完spring中最大两个的特性之一IoC为什么要有Ioc在传统的项目中我们发现我们的程序通过new的方式来创建对象的时候耦合度较高下层改变了什么比如说换了个数据库上层的代码就要跟着改变实际上这是我们不希望看到的。它违反了依赖倒置也使得系统难以扩展这也不符合OCP开闭原则对扩展开放 对修改关闭所以这时候spring出来了它帮我们进行对象的实例化同时维护类的关系。springIoc的原理Spring IoC 容器通过多种机制创建 Bean 实例包括但不限于构造方法并通过 setter 方法或构造方法参数完成依赖注入。对于普通 POJO默认使用反射调用构造方法创建对象但对于工厂、代理等高级场景则委托用户代码控制实例化过程。Spring 在启动时会解析配置文件注册所有 BeanDefinition包含类创建时所需要的信息对于singleton 作用域的 Bean非懒加载会在容器刷新阶段完成实例化和初始化。解析配置文件Spring 通过 XML 解析器如 DOM4J 或 JDK 内置解析器读取配置文件提取 bean 标签中的 id、class、属性值等信息构建 BeanDefinition。取出spring要的信息(bean的id全路径参数为简单类型赋值的属性值等等)。bean创建因为spring的配置文件中我们把类的全路径都给了spring所以它可以通过反射创建出这个类。Spring 在创建每个 Bean 时会递归解析其依赖若依赖的 Bean 尚未创建则立即转去创建它。对象的存储在一个mapStringObject集合中以key存idvalue存这个具体的类的方式存储这个bean。单例 Bean 最终存储在singletonObjects一级缓存中但在创建过程中还会用到二级、三级缓存以支持循环依赖。bean的赋值属性赋值发生在该 Bean 实例化之后、初始化之前。遍历所有集合将对象取出来分两种类型判断一下。为复杂属性赋值我们直接通过id把这个类取出来赋值即可为简单属性赋值我们需要判断这串字符串的类型有工具包或者一个一个的判断然后转成对应的类型为字段赋值。补充Spring 使用 TypeConverter PropertyEditor 机制进行类型转换例如注意按需创建 提前暴露早期引用三级缓存来解决循环依赖。解决循环依赖具体步骤创建 A调用构造器 → 得到原始对象将 A 的ObjectFactory放入三级缓存开始给 A 赋值发现依赖 B转去创建 B原始对象创建后立刻暴露 ObjectFactory 到三级缓存给 B 赋值发现依赖 A当 B 需要注入 A 时Spring 从三级缓存中通过 ObjectFactory 获取 A 的早期引用尚未完成属性注入和初始化并将其注入给 B。”B 初始化完成 → 放入一级缓存回到 A注入已创建的 BA 初始化完成bean的实例化的方式其实有多种Spring 提供了多种 Bean 实例化方式以适应不同场景。虽然它们在容器中表现为统一的 Bean 实例但底层创建机制并不相同有些通过构造方法有些通过工厂方法有些甚至返回代理或复用对象并非都依赖目标类的构造方法。bean的作用域bean标签的scope属性指明了bena的作用域的范围默认为单例形式即一个程序中一个id只有一个的bean而对于 prototype 作用域的 Bean则对数量没有限制它完全交给了客户端代码处理注意循环依赖仅在singleton 作用域 setter/field 注入下被 Spring 支持prototype、request 等作用域不支持循环依赖。实例化只是bean的生命周期的前面两步第一步创建Bean第二步Bean属性赋值第三步初始化Bean第四步使用Bean第五步销毁Bean注解加入后流程的变化注解的存在主要是为了简化XML的配置。Spring6后倡导全注解开发。前情提要Controller、Service、Repository这三个注解都是Component注解的别名在类上加上注解后我们便不需要在xml文件中书写bean标签了我们只需要在xml文件中指定扫描的包就行了实际上连这一步也可以在属性类上配置所以可以说有了注解我们便离开了传统的麻烦的在xml文件中书写bean标签的方式。那么spring到底是如何实现的这一方法的呢其背后的核心机制是组件扫描Component Scanning 注解元数据解析 BeanDefinition 注册。java配置类中ConfigurationComponentScan(com.powernode.spring6)publicclassAppConfig{}Spring 使用ResourcePatternResolver扫描classpath下的 .class 文件通过 ASM字节码分析库读取类的注解信息避免加载类到 JVM提升性能只有在真正需要实例化时才通过Class.forName()加载类并反射创建这解释了为什么 Spring 启动快 —— 扫描时不加载类只读字节码元数据。查看类上是否有注解Component及其其派生注解有的话创建一个BeanDefinition类里面记录了创建类所用到的信息将BeanDefinition注册到BeanFactory后续流程与 XML 方式完全一致
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

苏州设计网页网站好青岛网站建设搜q.479185700

Excalidraw与Figma差异分析:哪个更适合技术绘图? 在一场远程架构评审会议中,你是否经历过这样的场景? 产品经理刚讲完需求,会议室陷入沉默——没人能立刻理清模块之间的调用关系。有人打开PPT开始画框,另一…

张小明 2026/1/7 6:21:32 网站建设

天津河东区网站建设红酒网站建设

ARM架构如何重塑工业控制?从PLC到边缘网关的实战解析你有没有遇到过这样的情况:一个老旧的小型PLC,程序改一行要断电重启,通信只能接一条RS485总线,想加个以太网还得外挂模块……而现场设备越来越多,数据要…

张小明 2026/1/7 6:21:28 网站建设

怎么把qq空间做成企业网站一流设计网站

Emu3.5:原生多模态世界学习者 【免费下载链接】Emu3.5 项目地址: https://ai.gitcode.com/BAAI/Emu3.5 大语言模型领域再迎新突破——BAAI团队正式发布Emu3.5,这款以"原生多模态世界学习者"为定位的模型,通过统一世界建模与…

张小明 2026/1/7 6:21:25 网站建设

邵阳市建设网站钦州网站制作

Vivado 2018 安装与许可证全攻略:从零配置到稳定运行 你是不是也曾在安装 Vivado 的时候,卡在“License not found”这一步? 明明软件装好了,点开却一堆功能灰着用不了——IP核打不开、综合跑不起来、连生成比特流都提示权限不足…

张小明 2026/1/11 12:31:04 网站建设

网站flsh怎么做adsense wordpress

一、需求理解关于 Stable Diffusion 3.5 FP8 版本在游戏设计、广告创意、艺术创作等领域的应用案例分享,本文将从技术特性、各领域落地场景、实操代码、效果对比等维度,全面解析 SD3.5 FP8 的应用价值。二、Stable Diffusion 3.5 FP8 核心特性铺垫1.1 FP…

张小明 2026/1/7 8:32:59 网站建设

广州平台网站搭建教育机构网站开发

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个基于Cursor Rule的智能代码导航插件,要求:1. 支持通过自然语言描述跳转到指定代码段(如跳转到用户登录验证逻辑)2. 根据当前…

张小明 2026/1/7 8:32:58 网站建设