All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.springframework.cloud.netflix.feign.MockFeignClientAutoConfiguration Maven / Gradle / Ivy

There is a newer version: 1.0.4
Show newest version
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