之前使用feign是在分布式项目上,从来没有在纯springboot项目上单独用过。这次有需求要用突然间还挺蒙的,百度了一圈终于会了。
在Java中远程调用接口,可以使用HttpClient也可以使用feign,我这里就说feign的使用。
先导入feign依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.3.2.RELEASE</version>
</dependency>
创建feign客户端
接口上打上@FeignClient注解,括号里面两个参数必填
name:在分布式项目中这里需要填写对应微服务的服务名,由于我们是springboot单体项目所以这里可以随便填
url:远程调用的接口路径 我这里是配置在了application.properties文件里,方便修改。或者直接把URL的IP和端口写在这里也行
完整URL例子:http://IP:端口/getVersionListByProject?project=SYA
@Component//交给spring管理
@FeignClient(name = "jira",url = "${versionList.feign.url}")
public interface JiraFeignClient {
/**
* 通过项目查询版本信息(参数固定为SYA)
* @return 返回json字符串
*/
@GetMapping("/getVersionListByProject?project=SYA")
String getVersionList();
/**
* 通过版本名获取issues信息
* @param version:版本名称
* @return 返回json字符串
*/
@GetMapping("/getIssueInfoByVersion")
String getIssuesByVersion(@RequestParam("version") String version);
}
在需要的类中注入接口调用方法
@component
public class JiraTimer {
@Autowired
private JiraFeignClient jiraFeignClient;
public void test1() {
String name = "版本名称";
/* 通过接口调用方法获取数据,看具体返回什么数据,使用对应的类型进行接收就行 */
String versionListStr = jiraFeignClient.getVersionList();
String versionDetailStr = jiraFeignClient.getIssuesByVersion(name);
}
}