springcloud feign 服务调用其他服务_springCloud微服务项目 构建公共的feign调用

在微服务项目中加入有一个微服务的接口,很多其他的微服务都需要调用它,那么我们可以写在公共的项目中,而不需要每个微服务都建立一个相应 的feign

1.先在common 公共项目中建一个公共feign调用的接口(注意这儿用的是fallbackFactory,而不是fallback)

2.然后定义一个降级处理的类 (实现FallbackFactory)用来构建公共调用的接口

3.然后在resource目录下创建META-INF/spring.factories

(这是一个springboot默认创建bean的文件)内容是:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=
com.xxx.factory.DataProducerFallbackFactory,
com.xxx.util.IdWorker,
com.xxx.util.LogUtil,
com.xxx.exception.GlobalExceptionHandler

只需要将DataProducerFallbackFactory 加入spring容器中,因为接口已经在DataProducerFallbackFactory 类中new出并使用。

4.在common项目下再自定义一个feign调用的注解

import org.springframework.cloud.openfeign.EnableFeignClients;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;/** * 自定义feign注解 * 添加basePackages路径 * * @author lhm */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@EnableFeignClients
public @interface EnableCommonFeignClients
{
String[] value() default {};
String[] basePackages() default { "http://com.xxx" };//这里添加自己项目的包扫描路径
Class[] basePackageClasses() default {};
Class[] defaultConfiguration() default {};
Class[] clients() default {};
}

5.最后在其他微服务的启动类中添加该自定义注解:

就可以在其他微服务直接使用( Autoware )这个公共的feign调用了。

你可能感兴趣的:(springcloud,feign,服务调用其他服务)