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

空继承Feign配置类无法加载父类Bean的问题求助

问题:Feign空继承配置类无法加载父类Bean

背景

我维护多个配置不同的Feign客户端,通用配置类如下:

public class FeignLogConfig {
    @Bean
    public LogOkHttpInterceptor LogOkHttpInterceptor() { //*自定义拦截器*
        return new LogOkHttpInterceptor(); 
    }

    @Bean
    public feign.okhttp.OkHttpClient okHttpClient(LogOkHttpInterceptor interceptor) {
        OkHttpClient.Builder builder = new OkHttpClient.Builder();
        builder.addInterceptor(interceptor);
        return new feign.okhttp.OkHttpClient(builder.build());
    }
}

正常生效的配置场景

这个通用配置类可以通过继承扩展,比如下面这个添加了重试器的配置类:

public class FeignRetryerConfig extends FeignLogConfig {
    @Bean
    public Retryer retryer() {
        return new Retryer.Default(100, 500, 5);
    }
}

使用该配置的Feign客户端能正常加载拦截器:

@FeignClient(value = "retryClient", url = url, configuration = FeignRetryerConfig.class)

直接使用父类FeignLogConfig作为配置的客户端也能正常工作:

@FeignClient(value = "logClient", url = url, configuration = FeignLogConfig.class)

异常场景:空继承配置类失效

但如果定义一个空的继承类:

public class FeignEmptyConfig extends FeignLogConfig {}

将其作为配置的Feign客户端却无法加载LogOkHttpInterceptor:

@FeignClient(value = "emptyClient", url = url, configuration = FeignEmptyConfig.class)

我查阅了Spring Cloud Feign官方文档,未找到相关原因说明,不确定是否遗漏了必要配置项。

补充:@Import方式可解决问题

后续排查发现这可能和Feign本身无关,而是Spring配置聚合机制的问题。同样是空配置类,改用@Import引入父类配置就能正常生效:

@Import(FeignLogConfig.class)
public class EmptyFeignConfig {}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:50:32