FeignClientAutoConfiguration

北战南征 提交于 2020-03-02 10:09:45

org.springframework.cloud.sleuth.instrument.web.client.feign.TraceFeignClientAutoConfiguration

/**
 * {@link org.springframework.boot.autoconfigure.EnableAutoConfiguration
 * Auto-configuration} enables span information propagation when using Feign.
 *
 * @author Marcin Grzejszczak
 * @since 1.0.0
 */
@Configuration
@ConditionalOnProperty(value = "spring.sleuth.feign.enabled", matchIfMissing = true)
@ConditionalOnClass(Client.class)
@ConditionalOnBean(Tracer.class)
@AutoConfigureBefore(FeignAutoConfiguration.class)
@AutoConfigureAfter({SleuthHystrixAutoConfiguration.class, TraceWebAutoConfiguration.class})
public class TraceFeignClientAutoConfiguration {

    @Bean
    @Scope("prototype")
    @ConditionalOnClass(name = "com.netflix.hystrix.HystrixCommand")
    @ConditionalOnProperty(name = "feign.hystrix.enabled", matchIfMissing = true)
    Feign.Builder feignHystrixBuilder(BeanFactory beanFactory) {
        return SleuthHystrixFeignBuilder.builder(beanFactory);
    }

    @Bean
    @ConditionalOnMissingBean
    @Scope("prototype")
    @ConditionalOnProperty(name = "feign.hystrix.enabled", havingValue = "false", matchIfMissing = false)
    Feign.Builder feignBuilder(BeanFactory beanFactory) {
        return SleuthFeignBuilder.builder(beanFactory);
    }

    @Configuration
    @ConditionalOnProperty(name = "spring.sleuth.feign.processor.enabled", matchIfMissing = true)
    protected static class FeignBeanPostProcessorConfiguration {

        @Bean
        FeignBeanPostProcessor feignBeanPostProcessor(TraceFeignObjectWrapper traceFeignObjectWrapper) {
            return new FeignBeanPostProcessor(traceFeignObjectWrapper);
        }

        @Bean
        FeignContextBeanPostProcessor feignContextBeanPostProcessor(BeanFactory beanFactory) {
            return new FeignContextBeanPostProcessor(beanFactory);
        }
    }

    @Bean
    TraceFeignObjectWrapper traceFeignObjectWrapper(BeanFactory beanFactory) {
        return new TraceFeignObjectWrapper(beanFactory);
    }
}
 

 

 

org.springframework.cloud.netflix.feign.FeignClientsConfiguration\

@Configuration
public class FeignClientsConfiguration {

 

org.springframework.cloud.netflix.feign.FeignAutoConfiguration

@Configuration
@ConditionalOnClass(Feign.class)
public class FeignAutoConfiguration {

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!