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);
}
}