Web 后端开发 - 面试题库
一、基础题 ⭐
Q1. Spring Boot 自动配置的原理是什么?
答案:Spring Boot 自动配置通过 @EnableAutoConfiguration 注解实现,该注解利用 @Import(AutoConfigurationImportSelector.class) 导入自动配置类。核心机制是读取 META-INF/spring.factories 文件(Spring Boot 3.x 改为 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports),根据 classpath 中存在的依赖和条件注解(如 @ConditionalOnClass、@ConditionalOnMissingBean)决定是否加载相应的配置类。例如,当 classpath 中存在 DataSource 类时,会自动配置数据源相关 Bean。
关联知识点:Spring Boot 启动流程、条件注解、SPI 机制
Q2. ASP.NET Core 的依赖注入是如何工作的?
答案:ASP.NET Core 内置了轻量级 DI 容器,通过 IServiceCollection 接口注册服务,在 Program.cs 中调用 builder.Services.AddScoped/Singleton/Transient<TService, TImplementation>() 完成注册。服务有三种生命周期:Transient(每次请求创建新实例)、Scoped(同一请求内共享实例)、Singleton(整个应用生命周期内共享)。框架在构造函数中自动注入已注册的服务,实现控制反转。
关联知识点:控制反转(IoC)、服务生命周期、构造函数注入
Q3. Spring Boot 中如何处理跨域请求(CORS)?
答案:Spring Boot 提供了多种 CORS 配置方式:1)使用 @CrossOrigin 注解在 Controller 或方法级别配置;2)通过 WebMvcConfigurer 的 addCorsMappings 方法全局配置;3)使用 CorsFilter Bean。配置内容包括允许的源(allowedOrigins)、允许的 HTTP 方法(allowedMethods)、允许的请求头(allowedHeaders)等。推荐全局配置方式,在配置类中统一设置跨域策略。
关联知识点:CORS 协议、Spring MVC 配置、过滤器链
Q4. ASP.NET Core 中间件管道的工作原理是什么?
答案:ASP.NET Core 使用中间件管道处理 HTTP 请求,每个中间件可以选择处理请求或传递给下一个中间件。中间件通过 IApplicationBuilder.Use() 注册,执行顺序与注册顺序一致。请求从第一个中间件开始,依次向下传递,响应则反向传递。常用中间件包括认证、授权、路由、异常处理等。app.Run() 注册的中间件是终端中间件,不会调用下一个中间件。
关联知识点:责任链模式、HTTP 请求处理、中间件顺序
Q5. Spring Boot 中 @RestController 和 @Controller 有什么区别?
答案:@Controller 是传统的 Spring MVC 控制器注解,通常与视图解析器配合使用,返回视图名称(如 JSP、Thymeleaf 模板)。@RestController 是 @Controller 和 @ResponseBody 的组合注解,表示该控制器的所有方法返回值直接作为 HTTP 响应体,通常用于构建 RESTful API,返回 JSON 或 XML 格式数据。使用 @RestController 时,方法返回值会被 HttpMessageConverter 自动序列化。
关联知识点:RESTful API、消息转换器、视图解析
Q6. FastAPI 的路由是如何定义的?
答案:FastAPI 使用 Python 装饰器定义路由,通过 @app.get()、@app.post() 等装饰器绑定 URL 路径和 HTTP 方法。路由参数可以通过路径参数(/items/{item_id})、查询参数(函数默认参数)和请求体(Pydantic 模型)三种方式传递。FastAPI 自动根据类型注解生成 OpenAPI 文档,并实现请求参数验证和序列化。异步路由使用 async def 定义,支持高并发处理。
关联知识点:RESTful 路由、Pydantic 模型、OpenAPI 规范
Q7. Spring Boot 中如何实现全局异常处理?
答案:Spring Boot 提供 @ControllerAdvice 和 @ExceptionHandler 实现全局异常处理。创建标注 @ControllerAdvice 的类,在其中定义标注 @ExceptionHandler 的方法,指定要处理的异常类型。可以处理特定业务异常、参数校验异常、系统异常等。返回统一格式的错误响应,通常包含错误码、错误信息和请求路径。也可以使用 @ResponseStatus 注解设置 HTTP 状态码。
关联知识点:异常处理策略、统一响应格式、AOP
Q8. ASP.NET Core 中如何读取配置文件?
答案:ASP.NET Core 使用 IConfiguration 接口读取配置,支持多种配置源:JSON 文件(appsettings.json)、环境变量、命令行参数、用户机密等。配置按注册顺序加载,后加载的配置覆盖先加载的。通过依赖注入获取 IConfiguration 实例,使用 configuration["Key"] 或 configuration.GetSection("Section:Key") 读取。推荐使用 Options 模式,将配置绑定到强类型对象,通过 IOptions<T> 注入使用。
关联知识点:配置管理、Options 模式、配置优先级
Q9. Spring Boot 中 @Autowired 和 @Resource 有什么区别?
答案:@Autowired 是 Spring 提供的注解,默认按类型(byType)注入,当存在多个同类型 Bean 时配合 @Qualifier 指定名称。@Resource 是 JSR-250 规范提供的注解,默认按名称(byName)注入,名称匹配失败时按类型注入。@Autowired 支持构造函数、字段、Setter 注入,@Resource 仅支持字段和 Setter 注入。推荐使用 @Autowired 配合构造函数注入,更符合不可变设计原则。
关联知识点:依赖注入方式、Bean 查找机制、JSR 规范
Q10. FastAPI 中如何实现请求参数验证?
答案:FastAPI 基于 Pydantic 实现请求参数验证。定义继承自 pydantic.BaseModel 的模型类,使用 Python 类型注解声明字段类型,通过 Field() 设置验证规则(如最小值、最大值、正则表达式、必填等)。在路由函数中使用该模型作为参数类型,FastAPI 自动解析请求体并验证数据。验证失败时返回 422 状态码和详细错误信息。支持嵌套模型、可选字段、自定义验证器等高级功能。
关联知识点:Pydantic 验证、类型注解、数据校验
Q11. Spring Boot 中如何配置多环境?
答案:Spring Boot 支持通过 Profile 实现多环境配置。创建 application-{profile}.yml 文件(如 application-dev.yml、application-prod.yml),通过 spring.profiles.active 指定激活的 Profile。可通过命令行参数、环境变量、配置文件等方式设置。使用 @Profile 注解可以指定 Bean 在特定环境下生效。Spring Boot 2.4+ 还支持 spring.config.activate.on-profile 语法在单个文件中定义多环境配置。
关联知识点:Profile 机制、外部化配置、环境隔离
Q12. ASP.NET Core 中路由是如何配置的?
答案:ASP.NET Core 支持两种路由方式:传统路由和端点路由。端点路由是推荐方式,通过 app.UseRouting() 和 app.UseEndpoints() 配置。使用 MapGet、MapPost 等方法或 [HttpGet]、[HttpPost] 等属性注解定义路由。路由模板支持路径参数({id})、约束({id:int})、可选参数({id?})。Minimal API 风格直接在 Program.cs 中使用 app.MapGet("/path", handler) 定义路由。
关联知识点:端点路由、路由约束、Minimal API
Q13. Spring Boot 中如何实现定时任务?
答案:Spring Boot 通过 @EnableScheduling 注解启用定时任务支持,在方法上使用 @Scheduled 注解定义定时任务。支持三种调度方式:fixedRate(固定频率执行)、fixedDelay(固定延迟执行)、cron(使用 cron 表达式)。默认使用单线程执行器,多个任务会串行执行。如需并行执行,需配置 TaskScheduler Bean 或实现 SchedulingConfigurer 接口。任务方法不能有返回值和参数。
关联知识点:定时任务调度、cron 表达式、线程池配置
Q14. ASP.NET Core 中如何实现日志记录?
答案:ASP.NET Core 内置日志框架,通过 ILogger<T> 接口记录日志。日志级别包括 Trace、Debug、Information、Warning、Error、Critical。通过 builder.Logging 配置日志提供程序,支持 Console、Debug、EventSource、EventLog 等。推荐使用结构化日志,使用占位符而非字符串拼接:logger.LogInformation("User {UserId} logged in", userId)。可集成第三方日志框架如 Serilog、NLog,实现日志写入文件、数据库或远程服务。
关联知识点:日志级别、结构化日志、日志提供程序
Q15. FastAPI 中如何处理异步请求?
答案:FastAPI 基于 Starlette 和 asyncio 实现异步处理。使用 async def 定义异步路由函数,在函数内使用 await 调用异步操作(如数据库查询、HTTP 请求)。FastAPI 自动在线程池中运行同步函数,但推荐显式使用异步操作以提高并发性能。可使用 asyncio.gather() 并发执行多个异步任务。注意避免在异步函数中执行阻塞操作(如同步文件 I/O),应使用对应的异步库或 run_in_executor 委托给线程池。
关联知识点:asyncio、事件循环、并发编程
二、进阶题 ⭐⭐
Q16. Spring Boot 中 Bean 的生命周期是怎样的?
答案:Spring Bean 的生命周期包括:1)实例化:通过反射创建 Bean 实例;2)属性填充:注入依赖的 Bean 和属性值;3)Aware 接口回调:如 BeanNameAware、BeanFactoryAware;4)BeanPostProcessor 前置处理:postProcessBeforeInitialization;5)初始化:@PostConstruct、InitializingBean.afterPropertiesSet()、自定义 init-method;6)BeanPostProcessor 后置处理:postProcessAfterInitialization;7)使用:Bean 就绪可被调用;8)销毁:@PreDestroy、DisposableBean.destroy()、自定义 destroy-method。
关联知识点:Bean 生命周期、扩展点、Aware 接口
Q17. ASP.NET Core 中认证和授权的流程是怎样的?
答案:认证(Authentication)验证用户身份,授权(Authorization)验证用户权限。ASP.NET Core 使用中间件实现:UseAuthentication() 在 UseAuthorization() 之前注册。认证通过 AuthenticationHandler 读取请求中的凭证(如 Cookie、JWT),构建 ClaimsPrincipal。授权通过 AuthorizationMiddleware 检查策略(Policy)或角色(Roles),使用 [Authorize] 注解保护资源。可自定义 Handler 实现基于策略的授权,支持多认证方案组合。
关联知识点:JWT 认证、Claims 模型、策略授权
Q18. Spring Boot 中如何实现事务管理?
答案:Spring Boot 使用 @Transactional 注解声明事务,底层通过 AOP 代理实现。事务管理器(PlatformTransactionManager)负责事务的开启、提交和回滚。默认只在运行时异常和错误时回滚,可通过 rollbackFor 指定回滚异常类型。传播行为(Propagation)定义事务方法调用时的行为,如 REQUIRED(加入现有事务)、REQUIRES_NEW(创建新事务)、NESTED(嵌套事务)。隔离级别(Isolation)控制并发事务的可见性。
关联知识点:事务传播、隔离级别、AOP 代理
Q19. ASP.NET Core 中如何实现过滤器(Filter)?
答案:ASP.NET Core 提供五种过滤器:Authorization(授权)、Resource(资源)、Action(动作)、Exception(异常)、Result(结果)。通过实现 IActionFilter、IExceptionFilter 等接口或继承 ActionFilterAttribute 等基类创建自定义过滤器。过滤器在 Program.cs 中全局注册,或使用 [ServiceFilter]、[TypeFilter] 在 Controller/Action 级别应用。过滤器执行顺序:Authorization → Resource → Action → Exception → Result,支持设置 Order 属性控制同类型过滤器顺序。
关联知识点:AOP、过滤器管道、依赖注入
Q20. Spring Boot 中如何实现接口限流?
答案:Spring Boot 限流可通过多种方式实现:1)使用拦截器 + 令牌桶/漏桶算法自定义实现;2)集成 Sentinel 或 Resilience4j 等限流框架;3)使用 Redis + Lua 脚本实现分布式限流;4)使用 Guava RateLimiter 实现单机限流。推荐生产环境使用 Sentinel,支持 QPS 限流、线程数限流、热点参数限流等。限流策略包括直接拒绝、排队等待、匀速器模式。需根据业务场景选择合适的限流维度和降级策略。
关联知识点:限流算法、分布式限流、熔断降级
Q21. ASP.NET Core 中如何实现缓存?
答案:ASP.NET Core 支持内存缓存和分布式缓存。内存缓存通过 IMemoryCache 接口实现,使用 Set、Get、Remove 方法操作,支持绝对过期、滑动过期、缓存优先级等配置。分布式缓存通过 IDistributedCache 接口实现,支持 Redis、SQL Server 等提供程序。可使用响应缓存中间件(UseResponseCaching)缓存整个 HTTP 响应。缓存穿透、雪崩、击穿问题需通过布隆过滤器、随机过期时间、互斥锁等策略解决。
关联知识点:缓存策略、Redis 缓存、缓存一致性
Q22. Spring Boot 中如何实现文件上传和下载?
答案:文件上传使用 MultipartFile 接收,通过 transferTo() 方法保存到服务器。配置 spring.servlet.multipart.max-file-size 和 max-request-size 限制文件大小。下载通过 ResponseEntity<Resource> 返回,设置 Content-Type 和 Content-Disposition 响应头。大文件上传推荐使用分片上传,前端将文件分块后逐个上传,后端合并。可使用 @RequestPart 接收 multipart 请求中的 JSON 数据和文件。注意文件存储路径安全和文件名冲突处理。
关联知识点:Multipart 请求、流处理、分片上传
Q23. ASP.NET Core 中如何实现依赖注入的循环依赖解决?
答案:ASP.NET Core DI 容器不支持构造函数循环依赖,会抛出异常。解决方案:1)重新设计架构,消除循环依赖(推荐);2)使用属性注入替代构造函数注入;3)使用 IServiceProvider 延迟解析依赖:var service = serviceProvider.GetService<IService>();4)使用工厂模式,将依赖创建延迟到运行时;5)使用事件或消息解耦。根本解决方式是遵循依赖倒置原则,引入接口抽象,或通过中介者模式(Mediator)解耦组件。
关联知识点:依赖倒置、架构设计、服务定位器
Q24. Spring Boot 中如何实现多数据源配置?
答案:Spring Boot 多数据源配置需手动创建多个 DataSource Bean,并配置对应的事务管理器和 EntityManagerFactory。使用 @Primary 注解标记主数据源。为每个数据源创建独立的配置类,指定不同的包扫描路径(@MapperScan、@EntityScan)。MyBatis 多数据源通过配置多个 SqlSessionFactory 实现。JPA 多数据源需配置多个 LocalContainerEntityManagerFactoryBean。动态数据源可使用 AbstractRoutingDataSource 实现运行时切换。
关联知识点:数据源路由、JPA 配置、MyBatis 配置
Q25. FastAPI 中如何实现中间件?
答案:FastAPI 中间件通过 @app.middleware("http") 装饰器定义,接收 Request 和 call_next 参数。中间件在请求到达路由前和响应返回客户端前执行,可修改请求头、响应头、记录日志、性能监控等。多个中间件按注册顺序执行,形成洋葱模型。可使用 Starlette 的中间件类如 CORSMiddleware、TrustedHostMiddleware。自定义中间件需继承 BaseHTTPMiddleware,实现 dispatch 方法。注意中间件执行顺序对功能的影响。
关联知识点:中间件模式、请求拦截、洋葱模型
Q26. Spring Boot 中如何实现接口文档自动生成?
答案:Spring Boot 使用 SpringDoc OpenAPI(替代已停止维护的 Swagger)生成接口文档。引入 springdoc-openapi-starter-webmvc-ui 依赖后,自动扫描 Controller 生成 OpenAPI 3.0 规范文档。访问 /swagger-ui.html 查看交互式文档。使用 @Operation、@Parameter、@ApiResponse 等注解补充接口说明。可配置安全认证信息、服务器地址、标签分组等。支持导出 YAML/JSON 格式的 OpenAPI 规范文件,便于代码生成和接口测试。
关联知识点:OpenAPI 规范、Swagger UI、接口文档
Q27. ASP.NET Core 中如何实现后台任务?
答案:ASP.NET Core 使用 IHostedService 接口实现后台任务,推荐继承 BackgroundService 基类。实现 ExecuteAsync 方法编写任务逻辑,使用 CancellationToken 处理应用关闭信号。通过 builder.Services.AddHostedService<MyBackgroundService>() 注册。长时间运行的任务应使用异步操作,定期检查 IsCancellationRequested。多实例部署时需使用分布式锁或消息队列避免重复执行。定时后台任务可结合 PeriodicTimer 实现固定间隔执行。
关联知识点:HostedService、后台任务、应用生命周期
Q28. Spring Boot 中如何实现接口幂等性?
答案:接口幂等性保证多次相同请求结果一致。实现方式:1)数据库唯一索引:防止重复插入;2)Token 机制:请求前先获取 Token,提交时验证并删除;3)乐观锁:使用版本号字段,更新时检查版本;4)分布式锁:使用 Redis SETNX 防止并发执行;5)状态机:只有特定状态才能执行操作。支付、下单等关键接口必须实现幂等性。推荐结合业务场景选择方案,数据库层面兜底,应用层提前拦截。
关联知识点:分布式锁、乐观锁、并发控制
Q29. ASP.NET Core 中如何实现健康检查?
答案:ASP.NET Core 通过 AddHealthChecks() 和 MapHealthChecks() 实现健康检查端点。可注册自定义健康检查,实现 IHealthCheck 接口检查数据库连接、外部服务状态等。支持 UI 界面(AspNetCore.Diagnostics.HealthChecks.UI)可视化展示。健康检查分 Liveness(存活探针)和 Readiness(就绪探针),Kubernetes 据此决定重启或路由流量。可配置响应格式、缓存时间、超时时间。生产环境建议健康检查端点添加访问控制。
关联知识点:健康检查、Kubernetes 探针、服务监控
Q30. Spring Boot 中如何实现灰度发布?
答案:Spring Boot 灰度发布可通过网关层或注册中心实现。Nacos 支持基于权重的流量分配,设置不同实例的权重实现渐进式发布。Spring Cloud Gateway 可根据请求头、用户 ID 等条件路由到不同版本。使用 Ribbon 或 LoadBalancer 的灰度规则实现。结合 Apollo 或 Nacos 配置中心动态调整灰度比例。全链路灰度需传递灰度标识(如 HTTP Header),下游服务据此路由。监控灰度指标(错误率、延迟),异常时快速回滚。
关联知识点:服务网格、流量控制、版本路由
三、高级题 ⭐⭐⭐
Q31. Spring Boot 启动过程中 BeanFactoryPostProcessor 和 BeanPostProcessor 的区别和作用时机?
答案:BeanFactoryPostProcessor 在 Bean 定义加载后、实例化前执行,用于修改 Bean 定义(如属性值、Bean 类型),典型应用是 PropertySourcesPlaceholderConfigurer 处理占位符。BeanPostProcessor 在 Bean 实例化后、初始化前后执行,用于修改 Bean 实例(如创建代理、注入额外依赖),典型应用是 AOP 代理创建。前者操作的是 BeanDefinition,后者操作的是 Bean 实例。执行顺序:BeanFactoryPostProcessor → Bean 实例化 → BeanPostProcessor.before → 初始化 → BeanPostProcessor.after。
关联知识点:Spring 容器生命周期、AOP 原理、扩展点
Q32. ASP.NET Core 请求管道中 Use、Run、Map 的区别和执行顺序?
答案:Use 注册中间件,可调用 next() 传递请求给下一个中间件,也可短路直接返回响应。Run 注册终端中间件,不调用 next(),管道在此终止,后续中间件不执行。Map 基于请求路径分支管道,匹配时执行分支内中间件,不匹配时继续主管道。执行顺序:按注册顺序依次执行 Use,遇到 Map 时判断路径,匹配则进入分支,Run 终止管道。注意 Run 后注册的中间件不会被执行,Map 分支内的 Run 仅终止分支。
关联知识点:中间件管道、请求路由、短路机制
Q33. Spring Boot 中循环依赖的三级缓存机制是如何工作的?
答案:Spring 使用三级缓存解决循环依赖:1)singletonObjects(一级):存放完全实例化、属性填充、初始化完成的 Bean;2)earlySingletonObjects(二级):存放提前曝光的 Bean 实例(已实例化但未填充属性);3)singletonFactories(三级):存放 ObjectFactory,用于创建提前曝光的 Bean。获取 Bean 时依次查询三级缓存,三级缓存命中时移除并放入二级缓存。仅支持 Setter 注入的循环依赖,构造函数注入无法解决。AOP 代理时三级缓存存储代理工厂。
关联知识点:Bean 创建流程、代理机制、依赖注入
Q34. ASP.NET Core 中如何实现高性能的响应式编程?
答案:ASP.NET Core 可通过以下方式提升性能:1)全面使用异步 I/O,避免线程阻塞;2)使用 ValueTask 替代 Task 减少分配;3)使用 ArrayPool、MemoryPool 复用缓冲区;4)启用响应缓存减少重复计算;5)使用 IAsyncEnumerable 流式返回大数据;6)避免同步上下文切换,配置 ConfigureAwait(false);7)使用 System.Text.Json 替代 Newtonsoft.Json;8)启用 HTTP/2 和连接复用。性能优化需结合压测数据,避免过早优化。
关联知识点:异步编程、内存池、性能优化
Q35. 对比 Spring Boot、ASP.NET Core、FastAPI 的依赖注入机制有何异同?
答案:三者均支持构造函数注入,但实现方式不同。Spring Boot 功能最丰富,支持字段注入、Setter 注入、@Qualifier 指定 Bean、@Primary 优先级、循环依赖解决。ASP.NET Core 内置轻量 DI,仅支持构造函数和属性注入,不支持循环依赖,可替换为 Autofac 等第三方容器。FastAPI 基于 Starlette,依赖注入通过函数参数声明,使用 Depends() 实现,支持嵌套依赖和覆盖,更轻量但功能相对简单。三者均支持 Scoped/Singleton/Transient 生命周期。
关联知识点:DI 容器、生命周期管理、框架对比
Q36. Spring Boot 中如何设计和实现分布式事务?
答案:分布式事务解决方案:1)2PC(两阶段提交):强一致性但性能差,适用于金融场景;2)TCC(Try-Confirm-Cancel):业务层面实现补偿,性能好但开发复杂;3)本地消息表:事务与消息同库,定时任务发送,最终一致性;4)可靠消息服务(如 RocketMQ 事务消息):消息与本地事务绑定;5)Saga 模式:长事务拆分为多个本地事务,失败时逆向补偿。选择方案需权衡一致性要求、性能、开发成本。电商场景推荐可靠消息 + 补偿机制。
关联知识点:CAP 定理、最终一致性、补偿机制
Q37. ASP.NET Core 中如何设计和实现微服务间的通信?
答案:ASP.NET Core 微服务通信方式:1)同步 HTTP 调用:使用 HttpClient 或 IHttpClientFactory,配合 Polly 实现重试、熔断;2)gRPC:高性能 RPC 框架,支持双向流、Protobuf 序列化,适用于内部服务通信;3)消息队列:RabbitMQ、Azure Service Bus 实现异步解耦,适用于事件驱动架构;4)服务网格:Istio + Envoy 实现服务发现、负载均衡、熔断。推荐内部通信用 gRPC,跨域调用用 HTTP,事件驱动用消息队列。
关联知识点:gRPC、服务网格、消息驱动
Q38. 对比 Spring Boot、ASP.NET Core、FastAPI 的中间件/过滤器机制?
答案:三者均提供请求处理管道。Spring Boot 使用 Filter(Servlet 规范)和 Interceptor(Spring MVC),Filter 在 DispatcherServlet 前后执行,Interceptor 在 Controller 前后执行,还有 ControllerAdvice 全局异常处理。ASP.NET Core 使用统一中间件管道,所有请求处理逻辑都是中间件,还有 Filter 用于 MVC 场景。FastAPI 使用 Starlette 中间件,通过装饰器定义,还有 Depends 依赖注入机制。ASP.NET Core 管道最灵活,Spring Boot 层次最丰富,FastAPI 最简洁。
关联知识点:请求管道、AOP、框架架构
Q39. Spring Boot 中如何排查和解决内存泄漏问题?
答案:内存泄漏排查步骤:1)监控 JVM 内存使用,确认泄漏存在;2)使用 jmap -dump 导出堆转储文件;3)使用 MAT、JProfiler 分析大对象和 GC Root 引用链;4)定位泄漏对象类型和引用路径。常见原因:静态集合持续增长、未关闭的资源(连接、流)、监听器未注销、ThreadLocal 未清理、缓存无界增长。解决方案:设置缓存大小限制、使用 try-with-resources 关闭资源、及时移除监听器、ThreadLocal 使用后 remove。生产环境配置 -XX:+HeapDumpOnOutOfMemoryError 自动导出。
关联知识点:JVM 内存管理、GC 机制、性能调优
Q40. 三种框架(Spring Boot、ASP.NET Core、FastAPI)在微服务架构中的选型建议?
答案:选型需考虑团队技术栈、生态需求、性能要求。Spring Boot 生态最成熟,Spring Cloud 提供完整微服务解决方案(服务发现、配置中心、网关、熔断),适合 Java 团队和企业级应用。ASP.NET Core 性能优异,与 Azure 生态深度集成,适合 .NET 团队和云原生场景。FastAPI 开发效率高,异步性能好,适合 Python 团队和 AI/数据密集型服务。混合架构可结合使用:核心业务用 Spring Boot/.NET,AI 服务用 FastAPI,通过 gRPC 或 HTTP 通信。
关联知识点:微服务架构、技术选型、生态系统