1.pom
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2. Application 加 Feign 注解
import org.springframework.cloud.openfeign.EnableFeignClients;
@EnableFeignClients
public class Application {
public static void main(String[] args) {
// ldap 连接配置
System.setProperty("com.sun.jndi.ldap.object.disableEndpointIdentification", "true");
// 启动spring-boot项目
ConfigurableApplicationContext context = SpringApplication.run(Application.class, args);
// 打印项目信息
PrintApplicationInfo.print(context);
}
}
3. 开通接口
这个接口也可以写在服务端,消费端需要通过POM导入服务端的代码;
并且url 也可以写成动态的配置。
import com.xxx.platform.common.api.ApiResult;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* @author yy
* @description CommonDatasetFeignService
* @date 2024/7/25-9:37
* Copyright 2024 xxx DIBG West Region Service Delivery
*/
@FeignClient(name = "qes-portal",url = "http://localhost:8889")
public interface CommonDatasetFeignService {
@GetMapping("/api/common/dataset/{id}/results")
ApiResult queryData(@PathVariable int id, @RequestParam Map<String, Object> params);
}
4. 使用接口
4.1 包裹一层
import com.xxx.npi.tooling.common.constant.CommonConstant;
import com.xxx.platform.common.api.ApiResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.HashMap;
/**
* @author yy
* @description CommonDatasetService
* @date 2024/7/25-10:06
* Copyright 2024 xxx DIBG West Region Service Delivery
*/
@Component
public class CommonDatasetService {
@Autowired
private CommonDatasetFeignService commonDatasetFeignService;
public ApiResult getByDatasetId(int id) {
return commonDatasetFeignService.queryData(id, new HashMap<>(CommonConstant.SIXTEEN));
}
}
4.2 使用
@Resource
private CommonDatasetService commonDatasetService;
private List<String> getNpiDataById(int id) {
ApiResult result = commonDatasetService.getByDatasetId(id);
List<LinkedHashMap<String, String>> list = (List<LinkedHashMap<String, String>>) result.getData();
return list.stream().map(map -> map.get("label")).collect(Collectors.toList());
}