软件开发与网站开发旅游网站源码免费下载

张小明 2026/3/2 13:15:58
软件开发与网站开发,旅游网站源码免费下载,微友说是做网站维护让帮忙投注,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进行投诉反馈,一经查实,立即删除!

网站与支付宝对接怎么在百度上发布广告

5个智能条件节点实战技巧:让图像处理流程自动决策 【免费下载链接】slam-handbook-public-release Release repo for our SLAM Handbook 项目地址: https://gitcode.com/GitHub_Trending/sl/slam-handbook-public-release 还在为复杂的图像处理工作流头疼吗&…

张小明 2026/1/20 18:23:55 网站建设

手机建站系统源码怎么建立自己的网站平台多少钱

如果一只戴墨镜的猫能在泳池边当救生员,那么你也可以用一张照片或一段文字让故事动起来。SkyReels V1 的目标,就是把这种魔法装进可落地的推理框架里。 1. 项目背景:从“能生成”到“敢上线” 文本生成视频(T2V)和图生…

张小明 2026/1/20 18:23:24 网站建设

跆拳道东莞网站建设php做网站商城系统怎么样

终极指南:如何用sist2实现高效文件搜索与智能管理 【免费下载链接】sist2 Lightning-fast file system indexer and search tool 项目地址: https://gitcode.com/gh_mirrors/si/sist2 在信息爆炸的时代,如何快速找到所需文件成为每个用户面临的挑…

张小明 2026/1/20 18:22:22 网站建设

wordpress影视采集网站网站知识网站

调试技巧与GDB使用指南 在软件开发过程中,调试是一项至关重要的技能。本文将介绍调试过程中的一些注意事项,以及如何使用GNU调试器(GDB)进行有效的调试。 1. 信息查找与交流简洁性 如果所需信息分布在多行中,可能需要手动检查。同时,在调试过程中,应尽量保持交流简洁…

张小明 2026/1/20 18:21:51 网站建设

公关网站建设企业网站建设教程

Langchain-Chatchat构建行业术语词典提升专业度 在医疗、法律、金融等高专业门槛的行业中,一个AI助手若把“心肌梗死”理解成“心情不好”,或将“无因管理”解释为“没人管的事情”,显然无法被接受。尽管当前大型语言模型(LLM&am…

张小明 2026/1/20 18:20:50 网站建设

如何验证网站谁有做网站比较厉害的

Model2Vec终极指南:5分钟掌握全球最快静态嵌入模型 【免费下载链接】model2vec The Fastest State-of-the-Art Static Embeddings in the World 项目地址: https://gitcode.com/gh_mirrors/mo/model2vec 想要在自然语言处理项目中获得闪电般的文本嵌入速度吗…

张小明 2026/3/2 18:20:04 网站建设