就是接口加注解,声明式web服务客户端。

来历:

        现在我们都普遍使用面向接口编程,所以为了适应大家的需要,就出现了Feign接口。

微服务调用的方式

        1、通过服务名字获取调用的地址;

由   

        private static String PREFIX_URL="http://127.0.0.1:8083/user/";

变为
        private static String PREFIX_URL="http://PROVIDERCRUD/user/";

        2、通过接口+注解的方式获取调用的地址;

                Feign

 即Feign自带负载均衡。

Feign的使用:

        首先就是要引入相关依赖

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
            <version>1.4.7.RELEASE</version>
        </dependency>

 因为feign自带负载均衡,所以不需要引入ribbo依赖。也不需要对ribbon进行配置,Feign默认使用轮询算法。

        建立feign接口:

@FeignClient(name = "PROVIDERCRUD")
public interface UserClientFeign {

    @GetMapping(value = "/user/getAllUser")
    public String userList();
}

在接口上必须添加  @FeignClient  注解。

name表示服务名。

@GetMapping中的value值是生产者端相应方法的URI访问路径。

补充:@FeignClient  注解源码:(可略过)

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FeignClient {
    @AliasFor("name")
    String value() default "";

    /** @deprecated */
    @Deprecated
    String serviceId() default "";

    @AliasFor("value")
    String name() default "";

    String qualifier() default "";

    String url() default "";

    boolean decode404() default false;

    Class<?>[] configuration() default {};

    Class<?> fallback() default void.class;

    Class<?> fallbackFactory() default void.class;

    String path() default "";

    boolean primary() default true;
} 

        使用feign接口:

@RestController
@RequestMapping(value = "/feign")
public class UserControllerFeign {

    @Resource
    private UserClientFeign userClientFeign;

    @GetMapping("/getAllUser")
    public String getAllUser(){
        String s = userClientFeign.userList();
        return s;
    }
}

        启动类:

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients(basePackages = "com.hwj.sggapi.service")
public class SpringCloudTestSGGFeign {

    public static void main(String[] args) {
        SpringApplication.run(SpringCloudTestSGGFeign.class,args);
    }
}

一定要添加 @EnableFeignClients 注解。其中basePackages是feign接口所在路径。

到此即可实现feign接口的负载均衡。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐