java面试题分享|Gateway 和 MyBatis 的底层实现及设计模式深入理解
面试官的问题确实是在考察你对 Spring Cloud Gateway 和 MyBatis 的底层实现及设计模式的了解。
Spring Cloud Gateway 底层实现
- 底层框架:Spring Cloud Gateway 基于 Spring WebFlux 框架实现。WebFlux 底层使用了高性能的 Reactor 模式通信框架 Netty。
- 性能:支持的请求数大约在 1W~1.5W 左右,性能比 Zuul 高很多。
- 功能:提供统一的路由方式。基于 Filter 链提供网关基本功能,如安全、监控/指标、限流等。
- 工作原理:客户端发送请求到 Gateway。Gateway 根据配置的路由规则将请求转发到目标服务。目标服务处理请求并返回响应,Gateway 将响应返回给客户端。在这个过程中,Filter 链会处理请求和响应的预处理和后处理。
MyBatis 底层模板模型
- 设计模式:MyBatis 底层模板模型结合了建造者模式(Builder Pattern)和模板方法模式(Template Method Pattern)。
- 建造者模式:用于创建 SqlSessionFactory 和 SqlSession 对象。SqlSessionFactoryBuilder 用于创建 SqlSessionFactory 对象。SqlSessionFactory 对象再创建 SqlSession 对象。
- 模板方法模式:用于执行 SQL 语句和处理结果集。SqlSession 对象通过 Executor 接口来执行 SQL 语句。Executor 接口的实现类会调用 StatementHandler、ParameterHandler、ResultSetHandler 和 TypeHandler 来处理 SQL 相关的操作。
- 工作流程:解析配置文件(如 mybatis-config.xml)和映射文件(如 Mapper XML 文件)。构建 Configuration 对象,该对象包含了 MyBatis 的全局配置和映射信息。通过 SqlSessionFactoryBuilder 创建 SqlSessionFactory 对象。使用 SqlSessionFactory 创建 SqlSession 对象。SqlSession 对象调用 Executor 接口的方法执行 SQL 语句,并通过相关的 Handler 处理参数和结果集。
- 组件:XMLConfigBuilder 和 XMLMapperBuilder 用于解析配置文件和映射文件。SqlSessionFactoryBuilder 用于创建 SqlSessionFactory 对象。SqlSession 是 MyBatis 的核心接口,用于执行 SQL 语句和管理事务。Executor 是 MyBatis 的执行器,负责 SQL 语句的执行。StatementHandler、ParameterHandler、ResultSetHandler 和 TypeHandler 是 MyBatis 的处理器,分别负责 SQL 语句的生成、参数的设置、结果集的处理和数据类型的转换。