八股训练营第 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 的话,我们只需要配置好,然后在需要的地方引用就可以了。

相关推荐
KobeSacre几秒前
CyclicBarrier 源码
java·jvm·算法
我登哥MVP18 分钟前
Hadoop成长史-从Nutch子项目到大数据生态王者
java·大数据·hadoop·分布式·云原生·云计算
进击切图仔22 分钟前
SAM3 微调标注流水线和 Label Studio
java·服务器·前端
java1234_小锋29 分钟前
Maven 4 要来了:15 年后,Java 构建工具迎来“彻底重构“
java·重构·maven
霸道流氓气质38 分钟前
Java 工程师 AI 智能体学习路线 · 阶段 1:AI / LLM 基础认知 详解
java·人工智能·学习
JerrySir1 小时前
`spring.threads.virtual.enabled=true`:用三类负载定位等待、争用与拒绝
java·spring boot
尚早立志1 小时前
Spring Boot 之 BeanDefinitionLoader 详解
java·spring boot·后端
月光有害1 小时前
DDD 核心概念梳理:从领域模型到领域事件
java·ddd
snow@li1 小时前
Java:后端项目会有一个类似前端node_modules的目录吗 / jar包在本地仓库 ~/.m2/repository 中按版本共存
java·开发语言·前端
济*沧*海1 小时前
创建springboot项目时会出现注释乱码情况
java·spring boot·后端