Springcloud学习笔记27--JeecgBoot 微服务feign接口调用

以服务(jeecg-cloud-system)调用服务(jeecg-cloud-test)为例讲解feign调用说明

1 jeecg-demo中编写服务接口

(1)编写接口

public interface TestService {
    Result<String> getMessage(String name);
}

(2)编写实现类

@Service
public class TestServiceImpl implements TestService {
    @Override
    public Result<String> getMessage(String name) {
        return Result.OK("hello "+name);
    }
}

(3)编写服务接口

@Slf4j
@Api(tags = "test")
@RestController
@RequestMapping("/test")
public class TestController {
    @Resource
    private TestService testService;

    @GetMapping(value = "/demo")
    @ApiOperation(value = "测试方法", notes = "测试方法")
    public Result methodTest() {

        return Result.OK("这是测试方法TestController");
    }



    @GetMapping("/getMessage")
    public Result<String> getMessage(@RequestParam String name) {
        return testService.getMessage(name);
    }

}

2 jeecg-system中编写feign客户端

(1)启动类 加上 @EnableFeignClients 注解。

 (2)编写feign客户端

//value = "jeecg-cloud-test"中填写被调用服务的名称
@FeignClient(value = "jeecg-cloud-test")
@Component
public interface JeecgCloudTestFeign {

    @GetMapping(value = "/test/getMessage") // 注意(/test/getMessage为jeecg-cloud-test服务提供方中TestController中的方法对应的访问路径
    Result<String> getMessage(@RequestParam("name") String name);

}

(3)编写测试方法

@RestController
@RequestMapping("/test1")
public class JeecgCloudFeignTestController {
    //注入feign客户端
    @Autowired
    private JeecgCloudTestFeign jeecgCloudTestFeign;

    @GetMapping("/getMessage3")
    public Result<String> getMessage() {
        return jeecgCloudTestFeign.getMessage("jeecg-cloud-test");
    }
}

(4)postman测试

<1>直接访问微服务jeecg-cloud-system-start模块,该模块再调用服务提供方jeecg-cloud-test模块

 注意:如果postman访问不通,考虑在nacos配置文件中shiro中放开路径(添加/test1/**)

隐藏大坑:如果使用shiro避免拦截,可能造成token失效,导致无法登录。因此,shiro中添加的路径不能乱加。

<2>经过网关,访问 http://127.0.0.1:9999/sys/test1/getMessage3

参考文献:

http://doc.jeecg.com/2046526

原文地址:https://www.cnblogs.com/luckyplj/p/15380237.html