优雅使用openfeign实现服务远程调用

119 阅读1分钟

优雅使用openfeign实现服务远程调用

1、构建feign-api目录

1703494330003.png IUserClient.java
value: 远程服务名称
下面代码实际在请求https://127.0.0.1:51801/api/v1/userlist

@FeignClient(value = "leadnews-user",fallback = IUserClientFallback.class)
public interface IUserClient {

    @PostMapping("/api/v1/userlist")
    public ResponseResult getUserList();
}

2、实现IUserClient
注意:注意文件目录

image.png

UserClient.java

package com.heima.user.feign;

import com.heima.apis.useer.IUserClient;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.user.pojos.ApUser;
import com.heima.user.service.ApUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;


@RestController
public class UserClient implements IUserClient {
    @Autowired
    private ApUserService apUserService;

    @PostMapping("/api/v1/userlist")
    @Override
    public ResponseResult getUserList() {
        /**
         * 获取所有用户基本信息
         */
        List<ApUser> list = apUserService.list();
        return ResponseResult.okResult(200,list.toString());
    }
}

3、直接调用
直接注入IUserClient,即可使用

@Autowired
private IUserClient userClient;


ResponseResult userList = userClient.getUserList();
System.out.println("JSON.toJSONString(userList) = " + JSON.toJSONString(userList));

注意:
(1)、在使用IUserClient的服务的启动类加上注解
@EnableFeignClients(basePackages = "com.heima.apis")
(2)、配置config用于处理回调失败

image.png
InitConfig.java

@Configuration
@ComponentScan("com.heima.apis.useer.fallback")
public class InitConfig {
}