SpringCloud常见面试题

Spring Cloud 最新架构概览 截至 2025 年,Spring Cloud 的架构已全面拥抱云原生技术,主要包括以下核心组件: 服务发现:Nacos 2.0 成为首选,支持动态服务发现、配置管理和服务元数据管理 API 网关:Spring Cloud Gateway 4.0 全面支持 WebFlux 和响应式编程 负载均衡:Spring Cloud LoadBalancer 替代 Ribbon,提供更轻量的客户端负载均衡 断路器:Sentinel 取代 Hystrix,提供更强大的流量控制和熔断降级能力 配置中心:Nacos Config 或 Apollo 成为主流选择,支持实时配置刷新 分布式链路追踪:Micrometer Tracing + Zipkin/Skywalking 组合,兼容 OpenTelemetry 标准 服务间通信:OpenFeign 支持响应式编程,与 WebClient 协同工作 Spring Cloud Gateway架构设计与核心原理详解 Spring Cloud Gateway 基于响应式编程模型(WebFlux + Reactor),通过 动态路由匹配(Predicate 断言)和 过滤器链(GlobalFilter/GatewayFilter) 实现请求转发,集成服务发现(如 Nacos)、负载均衡(Ribbon)及熔断限流(Hystrix/Sentinel),以非阻塞 I/O 模型支撑高并发,保障微服务网关的高性能与可扩展性。 一、架构设计 1. 分层模型 Spring Cloud Gateway 采用 四层分层架构,支持高并发与动态扩展: 网络层(Netty Server) 基于 Netty 实现异步非阻塞 I/O,单线程处理万级并发连接。 支持 HTTP/2、WebSocket 协议,通过 ReactorNettyServer 封装请求为 ServerWebExchange 对象。 路由层(Route Matching) ...

2025-07-21 · FLY的狐狸

SpringBoot常见面试题

SpringBoot常见面试题 什么是 SpringBoot?它的主要优势是什么? 答案:SpringBoot 是基于 Spring 框架的快速开发脚手架,旨在简化 Spring 应用的初始搭建和开发过程。其主要优势包括: ①自动配置:通过注解和约定,自动完成大量配置工作,减少 XML 配置; ②起步依赖(Starter):将常用依赖打包,简化依赖管理; ③嵌入式服务器:内置 Tomcat、Jetty 等,无需单独部署; ④生产就绪特性:提供监控、健康检查、外部化配置等功能,便于运维。 SpringBoot 的自动配置原理是什么? 答案:核心基于@EnableAutoConfiguration注解,该注解通过@Import(AutoConfigurationImportSelector.class)导入自动配置类。AutoConfigurationImportSelector 会扫描META-INF/spring.factories文件,加载其中定义的自动配置类(如DataSourceAutoConfiguration)。这些配置类通过@Conditional条件注解(如@ConditionalOnClass、@ConditionalOnMissingBean)判断是否生效,最终根据类路径下的依赖和自定义配置,自动装配 Bean 到 Spring 容器中。 SpringBoot 中的 Starter 是什么?举例说明其作用。 答案:Starter 是 SpringBoot 提供的一组依赖描述符,将某一功能相关的依赖打包,简化依赖引入。例如spring-boot-starter-web包含了 SpringMVC、Tomcat、Jackson 等 Web 开发所需的核心依赖,开发者只需引入该 Starter,无需手动添加多个依赖,且版本由 SpringBoot 统一管理,避免版本冲突。 如何自定义 SpringBoot Starter? 答案:步骤如下: ①创建 Maven/Gradle 项目,定义 Starter 名称(通常遵循xxx-spring-boot-starter命名规范); ②引入spring-boot-autoconfigure和spring-boot-configuration-processor依赖; ③编写自动配置类(使用@Configuration、@Conditional等注解),定义需要自动装配的 Bean; ④在src/main/resources/META-INF/spring.factories中注册自动配置类; ⑤打包发布,其他项目引入该 Starter 即可使用自定义功能。 SpringBoot 的核心注解有哪些?各自的作用是什么? 答案: ①@SpringBootApplication:组合注解,包含@SpringBootConfiguration(标识配置类)、@EnableAutoConfiguration(开启自动配置)、@ComponentScan(扫描组件),是启动类的核心注解; ②@RestController:组合@Controller和@ResponseBody,标识控制器类,返回数据直接转为 JSON/XML; ③@RequestMapping/@GetMapping等:映射 HTTP 请求路径和方法; ④@ConfigurationProperties:绑定配置文件中的属性到 Java 类,常用于读取外部配置。 SpringBoot 如何实现外部化配置?有哪些配置方式? ...

2025-07-21 · FLY的狐狸