跳转到内容

FAQ

这一页按”你想干什么”组织,每条只给结论和入口,细节在对应章节。没找到答案时,先看故障排查。

没有关系,也不是包装层。Feat 从底层网络能力自建(基于 smart-socket 的 AIO),不走 Servlet 规范。Feat Cloud 提供类似 Spring Boot 的注解式开发体验,但装配发生在编译期而不是运行期反射。选型参考见 Feat 简介。

习惯注解式开发(Controller/Bean)从 Feat Cloud 开始;想理解底层模型或做极致性能优化从 服务端 开始。两边共享同一套路由与会话模型。

JDK 8+,主线以 Java 8 编译目标构建,8/11/17/21 均可运行。完整清单见系统要求。

按顺序查五件事,完整排查清单见故障排查:

  1. 类上有 @Controller、方法上有 @RequestMapping
  2. 引入了 feat-cloud-starter(编译期生成依赖)
  3. 包在 setPackages(...) 扫描范围内
  4. 改代码后重新执行过 Maven 编译(IDE 直接 Run 不会触发 APT)
  5. 启动日志里有 Feat Router: 输出

冒号形式:/:userId,通过 @PathParam("userId") 注入。花括号形式 {userId} 不支持——曾经支持过但已移除,不要从 Spring 的习惯直接照搬。

Controller 方法直接声明 POJO 参数,不需要注解,框架按字段名绑定。调用方必须带 Content-Type: application/json。常见坑(setter 缺失、基本类型拆箱 NPE)见Controller 与请求处理。

用 RestResult<T> 封装 success/code/message/data 四要素,见返回值与错误响应。

想在方法前后做鉴权/日志怎么办?

Section titled “想在方法前后做鉴权/日志怎么办?”

用方法拦截器 @Interceptor + @AroundInvoke,调用 proceed() 继续链路、不调用即短路,见方法拦截器。

feat.yml 是编译期输入,只重启不重新构建不会重新生成代码。执行 mvn clean package 后再启动,原理见编译期工作模型。

@Value("${key}") 从配置解析,同时兼容 JVM 参数 -Dkey 和环境变量 KEY(点号转下划线、全大写),优先级:系统属性 > 环境变量。支持 ${key:默认值}。完整规则见启动配置与环境配置。

注意:@Value("key") 不带 ${} 注入的是字面量字符串,见 Bean 与依赖注入。

服务发现文件 META-INF/services/...CloudService 被 shade 覆盖了,需要 AppendingTransformer,配置见部署与交付。

java -Dfeat.profiles.active=prod -jar app.jar,环境文件命名 feat-prod.yml,合并规则与排查见启动配置与环境配置。

用 SslPlugin,证书加载与 SSLEngine 高级用法见 HTTPS 配置。同一个服务还想跑 WebSocket/SSE/HTTP/2 见协议升级。

默认 maxRequestSize 很大但内存缓冲策略保守。文件上传用 Multipart 处理并调好上限,见ServerOptions 配置与Controller 与请求处理。

先分清负载类型:外部调用和数据库访问必须走异步处理,调线程数解决不了 IO 等待。完整调优思路见性能调优。

服务器在 Nginx 后面拿不到真实 IP?

Section titled “服务器在 Nginx 后面拿不到真实 IP?”

启用代理协议支持:options.proxyProtocolSupport()(PROXY protocol)。前提是前置代理配置了对应协议转发,见ServerOptions 配置。

一个可用的模型服务(OpenAI 兼容接口或 DashScope 等)及其 API Key,其余见 Feat AI 快速开始。

chatStream(...) + ChatStreamListener 回调逐段接收,见对话模型。注意 v2.5.0 起返回值变为 CompletableFuture<ChatResponse>。

工具调用(Function Calling)怎么做?

Section titled “工具调用(Function Calling)怎么做?”

用 Agent 机制组织模型与工具,@Tool 注册业务能力,见 Agent 工具。把业务系统暴露为 MCP 服务见 MCP 能力暴露。

有,WAF 支持方法白名单/黑名单和 URI 前后缀白名单,解析阶段即拦截,见安全实践。

new BasicAuthServerHandler(user, pass, realHandler) 包装业务处理器。必须配 HTTPS 使用,见安全实践。

静态资源会被路径穿越攻击吗?

Section titled “静态资源会被路径穿越攻击吗?”

内置处理器已拦截 ..//..\。自研文件下载接口不受这层保护,需自行校验,见静态资源服务。