You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为OpenAPI生成的WebFlux客户端采集HTTP指标?

解决OpenAPI生成WebClient.Builder非Spring Bean导致指标采集失效的问题

一、先试OpenAPI生成器自带配置

不用直接改模板,先试试这两个配置项,能直接让生成的客户端用Spring容器里的WebClient.Builder:

  • 在maven插件的<configOptions>里加useSpringBean=true:开启后生成的客户端类会变成Spring Bean,不再用静态方法创建Builder。
  • 搭配webClientBuilderProvider=spring:明确指定用Spring提供的WebClient.Builder实例,这样生成的代码会自动注入容器里的Builder,触发WebClientAutoConfiguration的指标采集逻辑。

给个maven插件的配置片段参考:

<plugin>
    <groupId>org.openapitools</groupId>
    <artifactId>openapi-generator-maven-plugin</artifactId>
    <version>6.0.1</version>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <inputSpec>${project.basedir}/src/main/resources/openapi.yaml</inputSpec>
                <generatorName>spring</generatorName>
                <configOptions>
                    <useSpringBean>true</useSpringBean>
                    <webClientBuilderProvider>spring</webClientBuilderProvider>
                    <!-- 其他你的原有配置 -->
                </configOptions>
            </configuration>
        </execution>
    </executions>
</plugin>

二、配置无效时再改模板

如果上面的配置没起作用,再考虑修改Mustache模板:

  1. 找到OpenAPI生成器对应的webClient.mustache模板(对应Spring WebFlux客户端的模板文件)。
  2. 把原来静态创建Builder的代码,换成通过@Autowired注入容器里的实例。比如把生成代码里的private static final WebClient.Builder builder = WebClient.builder();改成:
@Autowired
private WebClient.Builder webClientBuilder;
  1. 之后创建WebClient的地方都用这个注入的builder,替换原来的静态实例。

三、验证是否生效

改完后启动应用,做两件事确认:

  • 检查生成的客户端类,看是不是已经通过@Autowired注入了WebClient.Builder。
  • 访问/actuator/prometheus端点,查看有没有http_client_requests_*系列的指标,有就说明采集正常了。

内容的提问来源于stack exchange,提问作者Chris Brown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 08:52:13