答:缓存保存可重建的业务副本以减少重复读取,Spring Session用外部存储承载HTTP会话状态;两者都可用Redis,但目的、键空间、过期和失败影响不同。加一个Redis依赖不会自动让所有查询缓存、所有会话共享,也不能让不同服务天然共用同一身份体系。
答:简单进程内周期任务可用Scheduled,需持久触发和更复杂计划可评估Quartz等;跨实例分工与恢复则还要分布式协调。选择依据是错过触发怎么办、是否允许重叠、如何补跑和重试,而不是只看能否写一条cron表达式。
答:先看浏览器实际Origin、请求方法与凭据模式,再分清预检失败还是实际响应缺少允许头。代理、重定向与安全过滤链都可能改变路径,不能只看控制器上有CrossOrigin就认定完整链路已正确。跨域错误也可能掩盖服务端真正的401、403或异常响应。
答:Boot可准备Kafka相关配置,Spring Kafka可管理StreamsBuilder与KafkaStreams生命周期,再用拓扑描述转换、分组、窗口或聚合。Kafka Streams是客户端流处理库,状态与分区机制属于其运行模型,不是Boot把Controller放到后台就获得同样能力。
答:JHipster提供项目与业务结构生成,能围绕Boot后端及前端、身份或部署选项建立起点。生成器减少搭架子的重复工作,但生成代码仍需要团队理解、测试和维护。它不保证任意生成器版本与Boot4.1.2兼容,也不是生成后就无需设计领域和权限。
答:单元测试聚焦一个规则或协作,可不启动Spring;切片测试只加载特定层;Boot集成测试检查实际配置和组件协作,必要时启动真实服务器或隔离中间件。三者不是按测试文件名决定,关键是边界、依赖与它能证明什么。替身测试不能证明真实SQL或Broker协议正确。
答:可用匹配Boot版本的springdoc-openapi生成OpenAPI描述,并由Swagger UI等界面展示与试用;规范、生成器和界面是不同角色。自动提取能减少重复,但不能自动补齐业务权限、错误语义和兼容承诺,也不能用页面能打开代替契约测试。
答:服务实例通过选定注册机制登记位置和状态,调用方查询或缓存实例列表,再配合负载分配发起请求。Boot可运行服务,具体发现由匹配的Cloud实现或平台提供。注册成功不代表实例已经业务就绪,发现到地址也不保证下一次调用一定成功。
答:先明确数据库等权威来源与缓存副本的角色,再设计键、分区、过期、更新与故障策略。Redis等可提供共享数据能力,Boot负责相关集成,但多副本不会天然保持与数据库同步,也不意味着可以把缓存当作永不丢失的唯一业务事实。
答:通过匹配的GraphQL starter组织schema、查询与字段处理器,客户端按schema选择需要字段。Boot可管理基础设施,但GraphQL不是数据库查询语言,也不自动保证任意组合查询都高效或有权访问。字段级授权、查询成本和错误暴露仍需设计。