SpringCloud-OpenFeign远程调用

微服务项目的某一模块想要调用另一模块,可以使用OpenFeign

进行远程调用前,调用者与被调用者都需要注册到注册中心,注册服务到注册中心,可以参考我的这篇文章SpringCloud Alibaba-Nacos作为注册中心

使用示例:

以下示例是member模块(9091)远程调用coupon模块(9090)

(1)member(调用者)模块引入依赖


    1.8
    Greenwich.SR3



    
        org.springframework.cloud
        spring-cloud-starter-openfeign
    



    
        
            org.springframework.cloud
            spring-cloud-dependencies
            ${spring-cloud.version}
            pom
            import
        
    

(2)coupon(被调用者)写一个测试接口,来给member测试调用

@RestController
public class CouponController {
    @RequestMapping("/coupon")
    public int test() {
        return 999888777;
    }
}

(3)member创建feign包,创建接口,告诉SpringCloud这个接口需要调用远程服务

@FeignClient("xxx")

package com.xsl.member.feign;

import xxx;

@FeignClient("coupon")  // 告诉SpringCloud这个接口需要调用远程coupon服务
public interface CouponFeignService {
    @RequestMapping("/coupon")  // 路径注意写全
    public int test();  // 此处为上述接口(被调用者)去掉方法体,即方法的完整签名
}

(4)member启动类上添加注解开启远程调用功能

这个注解的参数可以不写,将扫描启动类所在的包以及子包中的接口

@EnableFeignClients(basePackages = "com.xsl.member.feign")

(5)member的Controller里就可以写方法来实现调用coupon了

@RestController
public class MemberController {

    @Autowired
    CouponFeignService service;

    @RequestMapping("feign")
    public int Feign() {
        int test = service.test();
        return test;
    }
}

(6)访问localhost:9091/feign

效果同于访问localhost:9090/coupon

你可能感兴趣的:(谷粒商城,spring,cloud,java,spring)