Spring Cloud OpenFeign教程,一个注解搞定,最详细使用教程

以Spring Cloud微服务项目为例,两个子项目:gulimall_coupon、gulimall_product

1、引入open-feign

        <-使用spring阿里巴巴版本控制,所以没写版本号->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

2、在gulimall_coupon微服务的controller层,编写一个接口,告诉SpringCLoud这个接口需要调用远程服务,修改“com.atguigu.gulimall.coupon.controller.CouponController”,添加以下controller方法:

特别注意微服务的application.yml文件中配置微服务名的时候,注意命名不能使用"_",而是用使用"-",否则会报:
Service id not legal hostname (gulimall_coupon)错误

 spring:
  application:
   name: gulimall-coupon  #这里一定使用"-",不能使用下划线
@RequestMapping("coupon/coupon")
public class CouponController {
	//全路径:/coupon/coupon/feign
    @RequestMapping("feign")
    public R feign(){
        CouponEntity couponEntity = new CouponEntity();
        couponEntity.setCouponName("买一百送一百");
        return R.ok().put("coupon",couponEntity);
    }
}

2.1、在gulimall_product目录下 ,新建一feign包(与server同级别),在feign下新建“com.atguigu.gulimall.product.feign.CouponFeignService”接口
@FeignClient("{被调用的微服务名}")
@RequestMapping("/coupon/coupon/member/list")

@FeignClient("gulimall-coupon")
public interface CouponFeignService {
	//被调用微服务的全路径
    @RequestMapping("/coupon/coupon/feign")
    public R feign();
}

2.2、在gulimall_product微服务启动类下,修改“com.atguigu.gulimall.member.GulimallProductApplication”类,添加上"@EnableFeignClients(basePackages = “{feign包路径}”)

@SpringBootApplication
@EnableFeignClients(basePackages = "com.atguigu.gulimall.product.feign")
public class GulimallMemberApplication {

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

声明接口的每一个方法都是调用哪个远程服务的那个请求

3、开启远程调用功能

在gulimall_product微服务的controller层注入feign接口在调用,

com.atguigu.gulimall.product.controller.ProductController

    @RequestMapping("/feign")
    public R test(){
        SpuInfoEntity spuInfoEntity = new SpuInfoEntity();
        spuInfoEntity.setUpdateTime(new Date());
        R feign = couponFeignService.feign();
        return R.ok().put("Update",spuInfoEntity).put("feign",feign);
    }

4、访问http://localhost:8000/product/attrattrgrouprelation/feign

1587701348764


版权声明:本文为weixin_44839328原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。