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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值