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

com.github.liaomengge.base_common.feign.FeignAutoConfiguration Maven / Gradle / Ivy

package com.github.liaomengge.base_common.feign;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.liaomengge.base_common.feign.endpoint.FeignClientManagerEndpoint;
import com.github.liaomengge.base_common.feign.helper.FeignHelper;
import com.github.liaomengge.base_common.feign.interceptor.GetPojoRequestInterceptor;
import com.github.liaomengge.base_common.feign.interceptor.HeaderRequestInterceptor;
import com.github.liaomengge.base_common.feign.manager.FeignClientManager;
import feign.Feign;
import feign.RequestInterceptor;
import feign.codec.Encoder;
import lombok.AllArgsConstructor;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Created by liaomengge on 2020/8/25.
 */
@AllArgsConstructor
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass({Feign.class, Encoder.class, RequestInterceptor.class})
@EnableConfigurationProperties(FeignProperties.class)
public class FeignAutoConfiguration {

    private final ObjectMapper objectMapper;

    @Bean
    @ConditionalOnMissingBean
    public GetPojoRequestInterceptor getPojoRequestInterceptor() {
        return new GetPojoRequestInterceptor(objectMapper);
    }

    @Bean
    @ConditionalOnMissingBean
    public HeaderRequestInterceptor headerRequestInterceptor() {
        return new HeaderRequestInterceptor();
    }

    @Bean
    @ConditionalOnMissingBean
    public FeignHelper feignHelper() {
        return new FeignHelper();
    }

    @Bean
    @ConditionalOnMissingBean
    public FeignClientManager feignClientManager(FeignHelper feignHelper, FeignProperties feignProperties) {
        return new FeignClientManager(feignHelper, feignProperties);
    }

    @Bean
    @ConditionalOnMissingBean
    public FeignClientManagerEndpoint feignClientManagerEndpoint(FeignClientManager feignClientManager) {
        return new FeignClientManagerEndpoint(feignClientManager);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy