springcloud利用feign调用接口案例

一、简介

feign简介:远程调用使用

二、核心

核心就是通过一系列的封装和处理,将以JAVA注解的方式定义的远程调用API接口,最终转换成HTTP的请求形式,然后将HTTP的请求的响应结果,解码成JAVA Bean,放回给调用者

 三、JDK Proxy代理实例特点

远程接口的本地JDK Proxy代理实例,有以下特点:

(1)Proxy代理实例,实现了一个加 @FeignClient 注解的远程调用接口;

(2)Proxy代理实例,能在内部进行HTTP请求的封装,以及发送HTTP 请求;

(3)Proxy代理实例,能处理远程HTTP请求的响应,并且完成结果的解码,然后返回给调用者。

四、实现案例

准备两个模块,一个是支付模块,一个是客户模块,现在通过feign实现支付模块去调用客户模块

1、支付模块导包

<!--openfeign-->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

 2、在支付模块上增加注解

basePackages表示扫描的包,可以自定义的

@SpringBootApplication
@EnableFeignClients(basePackages = {"com.*"})
public class CloudProviderPaymentApplication {

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

}

3、在客户模块上建立feign接口

FeignClient参数详解

 contextId:用来区分FeignClient实例

 value:对应的是调用的微服务的服务名,对用服务发现、走网关调用,这个很关键。

 fallbackFactory:一种回退的方式,回退的方式有两种,一种是fallbackFactory,一种是fallback ,在默认情况下fallback默认优先级比fallfactory优先级高

@FeignClient(contextId = "feignTestService",value = "cloud-consumer-service",fallbackFactory = FeignTestFallbackFactory.class)
public interface FeignTestService {

    
    @PostMapping("/test/feignTest")
    void feignTest();

}

4、在客户模块上建立feign回滚工厂

和上面fallbackFactory类对应

@Component
public class FeignTestFallbackFactory implements FallbackFactory<FeignTestService > {
    private static final Logger log = LoggerFactory.getLogger(FeignTestFallbackFactory.class);
    @Override
    public FeignTestService create(Throwable cause) {
        log.error("服务调用失败...................");

        return new FeignTestService() {
            @Override
            public void feignTest() {
                System.out.println("服务调用失败");
            }
        };
    }
}

5、客户模块controller层

 @PostMapping("/feignTest")
    public void FeignTest(){
        System.out.println("feign接口已经被调用了");
}

6、支付模块controller层

@Autowired
private FeignTestService feignTestService;
   
@GetMapping("/test")
public void testFeign() {
   System.out.println("开始执行feign!!!!");
   feignTestService.feignTest();
}

7、结果

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud微服务架构中,Nacos是一个注册中心和配置中心。Feign是一个声明式的Web服务客户端,它使得编写Web服务客户端变得更加容易。 使用Feign调用接口需要以下步骤: 1. 在pom.xml中添加Feign依赖 ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> ``` 2. 在启动类上添加@EnableFeignClients注解启用Feign客户端 ```java @SpringBootApplication @EnableDiscoveryClient @EnableFeignClients public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 3. 创建接口,并使用@FeignClient注解指定调用的服务名称和服务路径 ```java @FeignClient(name = "service-provider") public interface UserService { @GetMapping("/user/{id}") String getUserById(@PathVariable("id") Long id); } ``` 其中,name属性指定服务名称,GetMapping注解指定服务路径。 4. 在需要使用该服务的地方注入UserService并调用方法即可 ```java @RestController public class UserController { @Autowired private UserService userService; @GetMapping("/user/{id}") public String getUserById(@PathVariable("id") Long id) { return userService.getUserById(id); } } ``` 在这个例子中,我们定义了一个名为UserService的Feign客户端,指定了调用的服务名称和服务路径。然后在UserController中注入了UserService并调用了其方法。最终,Feign会自动将该请求转发到名为service-provider的微服务,并返回结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值