在微服务项目中加入有一个微服务的接口,很多其他的微服务都需要调用它,那么我们可以写在公共的项目中,而不需要每个微服务都建立一个相应 的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路径**@authorlhm*/
@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调用了。