@EnableFeignClients

一、@EnableFeignClients

https://andyboke.blog.csdn.net/article/details/86680622

在Spring cloud应用中,当我们要使用feign客户端时,一般要做以下三件事情:

1. 使用注解@EnableFeignClients启用feign客户端;扫描和注册feign客户端bean定义

@SpringBootApplication

@EnableFeignClients

public class TestApplication {

    public static void main(String[] args) {

        SpringApplication.run(TestApplication.class, args);

    }

}

2. 使用注解@FeignClient 定义feign客户端 ;

示例 : 该例子定义了一个feign客户端,将远程服务http://test-service/test/echo映射为一个本地Java方法调用。

@FeignClient(name = "test-service", path = "/test")

public interface TestService {

    @RequestMapping(value = "/echo", method = RequestMethod.GET)

    TestModel echo(@RequestParam("parameter") String parameter);

}

3. 使用注解@Autowired使用上面所定义feign的客户端 

    @Autowired   

    TestService testService;

 

    public void run()

    {

        // 这里的使用本地Java API的方式调用远程的Restful接口

        TestModel dto = testService.echo("Hello,你好!");

        log.info("echo : {}", dto);

     }

上面的三个步骤,前两个步骤可以理解为定义feign客户端,第三步是使用所定义的feign客户端。通过调试发现,上面第三步所注入的testService是一个代理对象,如下所示 :

testService = {$Proxy66@5502} 

    "HardCodedTarget(type=TestService, name=test-service, url=http://test-service/test)"

 h = {ReflectiveFeign$FeignInvocationHandler@6924} 

  target = {Target$HardCodedTarget@6930} 

  dispatch = {LinkedHashMap@6931}  size = 1

   0 = {LinkedHashMap$Entry@6948} 

    "public abstract xxx.model.TestModel xxx.service.TestService.echo(java.lang.String)" 

该对象会代理客户端完成远程服务方法的调用,那么,该代理对象是如何生成的 ?这篇文章,我们通过源代码分析来回答这些问题。

 












 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值