律师做网站推广有用吗学校网站模板 中文

张小明 2026/1/11 9:14:17
律师做网站推广有用吗,学校网站模板 中文,建设部网站官网证书编号,如何用python做网站Spring IoC 与 DI 核心原理学习笔记 一、什么是 IoC#xff08;Inversion of Control#xff0c;控制反转#xff09; 1. IoC 的思想 IoC#xff08;控制反转#xff09;是一种 设计思想#xff0c;它将原本由程序自身控制的对象创建与依赖管理#xff0c;交给容器来完成…Spring IoC 与 DI 核心原理学习笔记一、什么是 IoCInversion of Control控制反转1. IoC 的思想IoC控制反转是一种设计思想它将原本由程序自身控制的对象创建与依赖管理交给容器来完成。原本对象自己new依赖现在由 IoC 容器统一创建和维护对象之间的关系2. IoC 解决了什么问题降低代码之间的耦合度提高代码的可维护性更方便进行单元测试对象生命周期由容器统一管理二、IoC 在 Spring 中的体现在 Spring 中IoC 容器负责创建 Bean 对象管理 Bean 的生命周期维护 Bean 之间的依赖关系示例传统方式的问题publicclassBookServiceImplimplementsBookService{privateBookDaobookDaonewBookDaoImpl();Overridepublicvoidsave(){bookDao.save();}}问题BookService强依赖BookDaoImpl一旦 DAO 实现发生变化需要修改 Service 源码耦合度过高三、DIDependency Injection依赖注入1. 什么是 DIDI 是 IoC 的具体实现方式用于在运行时将对象所依赖的其他对象注入进来。IoC 是思想DI 是实现2. 为什么需要 DI业务层Service通常依赖 DAO 层的数据支持而 DAO 层在 Spring 中同样作为 Bean 统一管理。IoC 容器负责将Service 与其依赖的 DAO 自动“装配”在一起。四、使用 Spring XML 实现 DI1. 删除new使用 setter 注入Service 类publicclassBookServiceImplimplementsBookService{privateBookDaobookDao;publicvoidsetBookDao(BookDaobookDao){this.bookDaobookDao;}Overridepublicvoidsave(){bookDao.save();}}2. XML 中的配置beanidbookDaoclasscom.itheima.dao.impl.BookDaoImpl/beanidbookServiceclasscom.itheima.service.impl.BookServiceImplpropertynamebookDaorefbookDao//bean这样Service 不再关心 DAO 的具体实现依赖关系由 Spring 容器维护五、Bean 的别名aliasSpring 中的 Bean 是可以起别名的aliasnamebookServicealiasservice/之后可以通过service获取同一个 Bean 实例。六、Bean 的作用范围Scope1. 默认作用域singletonSpring 中Bean 默认是单例的适合被频繁复用的对象如 Service、DAObeanidbookDaoclasscom.itheima.dao.impl.BookDaoImplscopesingleton/2. prototype多例beanidbookDaoclasscom.itheima.dao.impl.BookDaoImplscopeprototype/每次获取都会创建一个新的对象。七、Spring 创建 Bean 的底层原理1. 使用反射创建对象Spring 底层通过反射机制创建 Bean构造方法可以是public或private默认使用无参构造方法⚠️ 如果类中只有有参构造而没有无参构造会抛出异常。八、Spring 中实例化 Bean 的四种方式方式一构造方法常用publicclassBookDaoImplimplementsBookDao{publicBookDaoImpl(){System.out.println(BookDao constructor running...);}Overridepublicvoidsave(){System.out.println(book dao save...);}}beanidbookDaoclasscom.itheima.dao.impl.BookDaoImpl/方式二静态工厂了解工厂类publicclassOrderDaoFactory{publicstaticOrderDaogetOrderDao(){returnnewOrderDaoImpl();}}XML 配置beanidorderDaoclasscom.itheima.factory.OrderDaoFactoryfactory-methodgetOrderDao/方式三实例工厂了解工厂类publicclassUserDaoFactory{publicUserDaogetUserDao(){returnnewUserDaoImpl();}}XML 配置beaniduserDaoFactoryclasscom.itheima.factory.UserDaoFactory/beaniduserDaofactory-beanuserDaoFactoryfactory-methodgetUserDao/方式四FactoryBean推荐FactoryBean 实现类publicclassUserDaoFactoryBeanimplementsFactoryBeanUserDao{OverridepublicUserDaogetObject(){returnnewUserDaoImpl();}OverridepublicClass?getObjectType(){returnUserDao.class;}}XML 配置beaniduserDaoclasscom.itheima.factory.UserDaoFactoryBean/九、总结IoC控制反转是一种设计思想DI依赖注入是 IoC 的具体实现Spring 容器创建对象管理依赖维护生命周期Bean 默认是单例实例化 Bean 有4 种方式推荐使用构造方法FactoryBean掌握 IoC 与 DI是理解 Spring 框架的核心基础。十、实例化 Bean 的三种方式一构造方法常用1. 构造方法实例化说明Spring 在默认情况下通过反射调用类的无参构造方法来创建 Bean 对象。只要类中提供了可访问的构造方法并且存在无参构造Spring 就可以正常完成 Bean 的实例化。2. 示例代码Bean 类publicclassBookDaoImplimplementsBookDao{publicBookDaoImpl(){System.out.println(book constructor is running...);}Overridepublicvoidsave(){System.out.println(book dao save...);}}XML 配置beanidbookDaoclasscom.itheima.dao.impl.BookDaoImpl/3. 注意事项面试高频⚠️如果无参构造方法不存在将抛出异常BeanCreationException原因Spring 默认使用无参构造方法创建对象没有无参构造反射无法实例化 Bean✅ 解决方式提供无参构造方法或使用构造参数注入后续章节十一、Bean 的生命周期重点Bean 的生命周期描述了Bean 从创建到销毁的完整过程。1. Bean 生命周期整体流程1初始化容器阶段创建对象分配内存执行构造方法执行属性注入set方法执行 Bean 初始化方法2使用 Bean 阶段执行业务逻辑方法3销毁容器阶段执行 Bean 销毁方法释放资源简化记忆口诀构造 → 注入 → 初始化 → 使用 → 销毁十二、Bean 销毁时机与容器关闭1. Bean 销毁触发条件容器关闭时才会触发 Bean 的销毁销毁方法不会自动执行必须显式关闭容器2. 容器关闭的两种方式方式一手动关闭容器常见publicclassAppForLifeCycle{publicstaticvoidmain(String[]args){ConfigurableApplicationContextctxnewClassPathXmlApplicationContext(applicationContext.xml);ctx.close();}}调用close()方法立即触发 Bean 的销毁逻辑方式二注册 JVM 关闭钩子推荐ctx.registerShutdownHook();特点JVM 退出前自动关闭 Spring 容器常用于 Web 项目 / 长时间运行程序十三、Bean 生命周期的控制方式1. 通过 XML 配置生命周期方法常用Bean 类publicclassBookDaoImpl{publicvoidinit(){System.out.println(bean init...);}publicvoiddestroy(){System.out.println(bean destroy...);}}XML 配置beanidbookDaoclasscom.itheima.dao.impl.BookDaoImplinit-methodinitdestroy-methoddestroy/2. 通过接口控制生命周期了解初始化接口publicclassBookDaoImplimplementsInitializingBean{OverridepublicvoidafterPropertiesSet(){System.out.println(after properties set...);}}销毁接口publicclassBookDaoImplimplementsDisposableBean{Overridepublicvoiddestroy(){System.out.println(bean destroy...);}}实际开发建议✅ 优先使用init-method/destroy-method❌ 尽量避免侵入业务代码的接口方式十四、小结Spring 默认通过无参构造方法实例化 BeanBean 生命周期五步构造属性注入初始化使用销毁Bean 销毁必须关闭容器生命周期控制方式XML推荐接口了解
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

wordpress全站启用ssl兰州网站建设招聘

时空数据分析已成为现代科学研究和商业应用的重要方向,而ST-DBSCAN作为专门针对时空数据的聚类工具,正在改变我们理解移动模式的方式。无论是分析动物迁徙轨迹,还是优化城市交通流量,这款开源神器都能提供精准的聚类结果。本文将带…

张小明 2026/1/10 17:34:08 网站建设

windows wordpress mi硬件优化大师下载

第一章:Open-AutoGLM驱动下的开发效率革命在人工智能与软件工程深度融合的当下,Open-AutoGLM作为新一代代码智能生成框架,正悄然引发开发范式的根本性变革。它基于大规模语言模型与上下文感知机制,能够理解项目结构、编码规范甚至…

张小明 2026/1/10 17:57:16 网站建设

南通做外贸网站免费网站建设企业

在制造业追求极致效率的今天,标准作业程序(SOP)被视为保障良率和安全的生命线。然而,再完美的SOP,一旦落实到具体的人身上,往往就会出现偏差。作为管理者常常面临着这样的灵魂拷问:规程写在纸上…

张小明 2026/1/10 10:52:53 网站建设

网站建设总体要求网站开发报价模板

从零开始搞懂PCB Layout:新手也能看懂的实战指南你有没有遇到过这样的情况?电路原理图画得严丝合缝,元器件选型精挑细选,结果板子一打回来——功能不稳、信号乱跳、EMC测试直接挂掉。反复改版,烧钱又耗时。问题出在哪&…

张小明 2026/1/10 15:36:44 网站建设

网站界面ui设计个人网站首页界面

进程与诊断实用工具使用指南 1. VMMap 文本查找与复制 在 VMMap 的详细视图中查找特定文本,可按 Ctrl+F 组合键。查找功能会选中详细视图中包含你指定文本的下一个可见行,文本可位于任意列。需注意,它不会在未展开的子块中搜索文本。若要重复上一次搜索,按 F3 键即可…

张小明 2026/1/11 5:53:30 网站建设

深圳网站设计哪家深圳网站建设怎么做

桶算法(Bucket Algorithm)是React调度系统的核心秘密武器!它通过巧妙的时间分组,实现了批量更新和优先级管理。让我深入解释这个精妙的设计。内容结合了deepseek产出,旨在碎片化理解一些react 的概念,以便后…

张小明 2026/1/10 16:27:15 网站建设