1.简要说明
1 想要调用别的服务
1)、引入open-feign
2)、编写一个接口告诉SpringCloud这个接口需要调用的远程服务
1.声明接口的每一个方法都是调用远程服务
3)、开启远程调用功能
2.引入open-feign
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
3.编写远程调用controller
@RequestMapping("/member/list")
public R memberCoupons(){
SmsCouponEntity smsCouponEntity = new SmsCouponEntity();
smsCouponEntity.setCouponName("testname");
return R.ok().put("coupons",Arrays.asList(smsCouponEntity));
}
4. 编写远程调用接口类
package com.lg.sgg.member.feign;
import com.lg.common.utils.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* Date:2020/11/7
* 这是一个申明式的远程调用
* @author:lg
*/
// 生命调用哪一个远程
@FeignClient("sgg-sms")
public interface CouponFeignService {
/**
* 远程调用要指明全路径映射访问地址
* @return
*/
@RequestMapping("/coupon/smscoupon/member/list")
public R memberCoupons();
}
5. 编写调用远程的controller方法
@RestController
@RequestMapping("member/umsmember")
public class UmsMemberController {
@Autowired
private UmsMemberService umsMemberService;
@Autowired
private CouponFeignService couponFeignService;
@RequestMapping("/coupons")
public R testFeign(){
UmsMemberEntity umsMemberEntity = new UmsMemberEntity();
umsMemberEntity.setCity("guangzhou");
umsMemberEntity.setEmail("qq.com");
R r = couponFeignService.memberCoupons();
return R.ok().put("member",umsMemberEntity).put("coupons",r.get("coupons"));
}
}
6.开启服务注册与发现并写生命哪个包下是调用远程的接口
package com.lg.sgg.member;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
/**
* 1 想要调用别的服务
* 1)、引入open-feign
* 2)、编写一个接口告诉SpringCloud这个接口需要调用的远程服务
* 1.声明接口的每一个方法都是调用远程服务
* 3)、开启远程调用功能
*/
@EnableFeignClients(basePackages = "com.lg.sgg.member.feign")
@EnableDiscoveryClient
@SpringBootApplication
public class SggMenberApplication {
public static void main(String[] args) {
SpringApplication.run(SggMenberApplication.class, args);
}
}