八股训练营第 38 天 | 类加载机制介绍一下?介绍一下双亲委派机制?说一说你对 Spring AOP 的了解?说一说你对 Spring 中 IoC 的理解?

类加载机制介绍一下?

类加载机制是指 Java 虚拟机运行 Java 程序时,将类加载到内存中的过程,包含 3 个阶段:

  1. 加载:类加载器负责去查找\的字节码,将其加载到内存中。
  2. 连接:分为 3 个子阶段。
    • 验证:验证加载的类的格式是否正确,并且不包含不安全的构造。
    • 准备:在内存中为类的静态变量分配空间,并且初始化。数值类型初始化为 0,引用类型初始化为 null
    • 解析:将类、方法、接口、字段的符号引用解析为直接引用,即内存地址。
  3. 初始化:执行类的静态初始化代码。包括静态变量的赋值和静态代码块的执行。静态初始化在类的首次使用时进行,包括创建实例、访问静态字段或调用静态方法。

介绍一下双亲委派机制?

双亲委派机制是 Java 类加载器的一种设计模式。它保证了 Java 核心库的安全性和一致性。双亲委派机制就是当一个类加载器收到加载类的请求后,默认会委托其父级加载器去处理。只有当其父级加载器无法加载该类时,才会尝试自行加载。

双亲委派机制提高了安全性,防止 Java 核心库被篡改。因为所有的类最终都由顶层的类加载器去加载。并且由于类加载器直接从父级加载器那里加载类,也可以避免类的重复加载。

说一说你对 Spring AOP 的了解?

面向切面编程是对面向对象编程的补充和完善。OOP 通过封装、继承和多态等概念建立一种对象层次结构。但它只允许开发者定义纵向的关系,并不适合定义横向的关系。例如日志功能、事务管理、权限管理等。而 AOP 恰好相反,它通过一种"横切"的技术,剖解开封装的对象内部,将那些影响了多个类的公共行为封装到一个可重用模块,成为"切面"。所谓"切面",简单来说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,从而减少系统的重复代码,降低模块之间的耦合度,提高未来的可操作性和可扩展性。

说一说你对 Spring 中 IoC 的理解?

Spring IoC 即控制反转。它的核心思想是将对象的创建和依赖关系由容器来控制。而不需要我们自己去 new 出来。这有利于组件之间保持一种松散的耦合。

Spring 中的容器实际上就是一个 Map。Map 保存了各种对象。通过 DI 依赖注入,Spring 容器可以在运行时动态地将依赖注入到需要它的对象中去。而不是让对象自己去寻找或创建依赖。这可以在很大程度简化应用的开发,将应用从复杂的依赖关系中解放出来。举个例子,在实际项目中,一个 Service 类可能有成百上千个类作为它的底层。如果要实例化一个 Service,那么可能需要搞清它的所有底层类的构造函数。但是通过 IoC 的话,我们只需要配置好,然后在需要的地方引用就可以了。

相关推荐
鲨鱼辣钊2 小时前
【FastAPI筑基-Day19】APScheduler定时任务全实战|自动执行、动态启停、后台常驻
java·spring·fastapi
学长毕业设计6 小时前
基于SpringBoot的公益基金管理系统(源码+文档+讲解视频)
java·spring boot·后端
东小西6 小时前
【SAA实战】第 3 篇 · 工具调用全攻略:把业务能力交给 Agent 自己调度
java·后端·spring
东小西7 小时前
【SAA实战】第 4 篇 · Agent 短期记忆:saver 让 Agent 跨轮记得住(threadId 隔离)
java·后端·spring
许彰午7 小时前
22-DataCenter报文序列化
java·低代码·架构·状态模式
2601_962065257 小时前
[MySQL] SQL优化之性能分析
java·sql·mysql
小范同学_7 小时前
JDK1.7 与 JDK1.8 HashMap 底层原理对比 + 数组并发扩容死循环详解
java·开发语言
予昊8 小时前
从零实现“在线五子棋对战“:WebSocket 实时通信 + 段位匹配
java·开发语言·网络·websocket
2601_962203518 小时前
【SpringAI入门】初识SpringAI
java
weixin_461408589 小时前
Mybatis-flex小记
java·开发语言·mybatis