优雅使用openfeign实现服务远程调用
1、构建feign-api目录
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
注意:注意文件目录
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用于处理回调失败
InitConfig.java
@Configuration
@ComponentScan("com.heima.apis.useer.fallback")
public class InitConfig {
}