远程调用
这里以会员服务调用优惠服务为例(如查询会员的优惠卷)
第一步
参考优惠服务注册,完成对会员服务的注册,会员服务配置文件
server:
port: 8001
# DataSource Config
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://192.168.182.128:3306/gulimall_ums
username: root
password: root
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
application:
name: gulimall-member
mybatis-plus:
mapper-locations: classpath:/mapper/**/*.xml
# id自增
global-config:
db-config:
id-type: auto
第二步 添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
第三步 编写接口
- 优惠服务 : gulimall-coupon
@RestController
@RequestMapping("coupon/coupon")
public class CouponController {
@Autowired
private CouponService couponService;
/**
* 会员优惠卷列表
*/
@RequestMapping("/member/list")
public R memberCouponList(){
CouponEntity couponEntity = new CouponEntity();
couponEntity.setCouponName("满100减10");
return R.ok().put("coupon", couponEntity);
}
}
- 会员服务: gulimall-member
在com.atguigu.gulimall.member包下新建feign包,用于专门存放远程调用接口
新建类 CouponFeignService
- 路径要写全路径 特定服务 @RequestMapping(“coupon/coupon/member/list”)
- feign接口 标注提供服务的名字 @FeignClient(“gulimall-coupon”)
@FeignClient("gulimall-coupon")
@RequestMapping("coupon/coupon")
public interface CouponFeignService {
@RequestMapping("/member/list")
R memberCouponList();
}
第四步 启动类添加注解
调用服务的消费方启动类加入注解
@EnableFeignClients(basePackages = “com.atguigu.gulimall.member.fegin”)
@EnableFeignClients(basePackages = "com.atguigu.gulimall.member.feign")
@EnableDiscoveryClient
@SpringBootApplication
public class GulimallMemberApplication {
public static void main(String[] args) {
SpringApplication.run(GulimallMemberApplication.class, args);
}
}
第五步 调用接口
@RestController
@RequestMapping("member/member")
public class MemberController {
@Autowired
CouponFeignService couponFeignService;
/**
* 列表
*/
@RequestMapping("/test")
public R test(){
R r = couponFeignService.memberCouponList();
Object coupon = r.get("coupon");
return R.ok().put("coupon", coupon);
}
}
访问 localhost:8001/member/member/test ,即可调用到优惠服务