FeignClientBuilder自定义生成FeignClient

spring-cloud-openfeign-core包下提供了FeignClientBuilder类,可以在不使用@FeignClient注解的情况下手动生成FeignClient


@Component
public class FeignClientCustomBuilder implements ApplicationContextAware {

    private static FeignClientBuilder builder;

    /**
     * 手动生成FeignClient,准备一个FeignClient基类,该类不用打{@link org.springframework.cloud.openfeign.FeignClient}注解
     * @param clazz feignClient基类
     * @param name 
     * @param contextId
     * @param path
     * @param <T>
     * @return
     */
    public static <T> T getFeignClient(Class<T> clazz, String name, String contextId, String path) {
        FeignClientBuilder.Builder<T> feignClientBuilder = builder.forType(clazz, name);
        return feignClientBuilder.contextId(contextId).path(path).build();
    }


    /**
     * 通过spring applicationContext生成builder
     *
     * @param applicationContext 实现ApplicationContextAware接口回调注入app
     * @throws BeansException
     */
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        builder = new FeignClientBuilder(applicationContext);
    }
}


posted @ 2021-09-18 09:58  小白白白白白白白白白  阅读(2837)  评论(0编辑  收藏  举报