微服务nacos feign远程调用
- 两个工程需要在nacos中进行注册,否者找不道远程调用的工程,会报错
- 在gulimall-coupon工程中创建一个方法
@GetMapping("/member/list") public R membercoupons(){ CouponEntity couponEntity = new CouponEntity(); couponEntity.setCouponName("满一百减五十"); return R.ok().put("coupons", Arrays.asList(couponEntity)); }
- 在gulimall-member 中进行远程调用 1) 在该工程下创建一个feign包,创建接口,用来声明式调用
@FeignClient("gulimall-coupon") # application name public interface CouponFeignService { @RequestMapping("/coupon/coupon/member/list") public R membercoupons(); }
2)将要调用的方法的方法名直接拷贝过来,访问的地址全路径名也进行拷贝 3)调用的地方将该service注入后进行使用
@RequestMapping("/coupons") public R test(){ MemberEntity memberEntity = new MemberEntity(); memberEntity.setNickname("张三"); R membercoupons = couponFeignService.membercoupons(); return R.ok().put("member",memberEntity.getNickname()).put("coupons", membercoupons.get("coupons")); }
- application开启远程配置,并扫描远程调用的feign包
@EnableFeignClients(basePackages = "com.atguigu.gulimall.member.fegin") # 开启远程调用功能 @EnableDiscoveryClient @SpringBootApplication public class GulimallMemberApplication { public static void main(String[] args) { SpringApplication.run(GulimallMemberApplication.class, args); } }
返回结果: 完成feign的远程调用其他程序的功能。