
org.springframework.cloud.netflix.feign.MockFeignClientAutoConfiguration Maven / Gradle / Ivy
package org.springframework.cloud.netflix.feign;
import feign.Client;
import lombok.Getter;
import lombok.Setter;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
@Configuration
@ConfigurationProperties(prefix = "mock.feign")
public class MockFeignClientAutoConfiguration {
private static final String FEIGN_CLIENT_FACTORY_BEAN_CLASS =
FeignClientFactoryBean.class.getName();
@Getter
@Setter
private static String apiBlueprint = null;
/**
* Using default client instead of {@link org.springframework.cloud.netflix.feign.ribbon.LoadBalancerFeignClient}
*
* @return {@link Client.Default}
*/
@Bean
@Primary
public Client mockFeignClient() {
return new Client.Default(null, null);
}
@Bean
public static MockFeignClientFactoryBeanPostProcessor mockFeignClientFactoryBeanPostProcessor() {
return new MockFeignClientFactoryBeanPostProcessor();
}
static class MockFeignClientFactoryBeanPostProcessor implements BeanDefinitionRegistryPostProcessor {
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
BeanDefinition definition;
for (String bean : registry.getBeanDefinitionNames()) {
definition = registry.getBeanDefinition(bean);
if (FEIGN_CLIENT_FACTORY_BEAN_CLASS.equals(definition.getBeanClassName()) &&
null != apiBlueprint) {
definition.getPropertyValues().add("url", apiBlueprint);
}
}
}
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy