调用其他微服务可以使用RestTemplate,但Feign更方便,向申明接口那样就行。
1.pom文件中添加依赖:
<!-- Feign -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
2.Application类添加@EnableFeignClients注解
3.编写feign接口:
@FeignClient(name = "${feign.code.name}",url="${feign.code.url}")
@RequestMapping("/projects")
public interface CodeService {
@RequestMapping(value ="/prefix/{projectName}", method = RequestMethod.GET)
public ResultData getProjectChildrenByPrefix(@PathVariable("projectName") String projectName,
@RequestParam("username") String username,
@RequestParam("httpPassword") String httpPassword);
}
FeignClient中的name和url读取自application.yml文件:
配置的是要访问的目标服务的名称和地址
feign:
code:
name: test-service
url: http://testservice.com.cn/api
"/projects"是要访问的微服务的具体的类
"/prefix/{projectName}"是要访问的微服务的具体的方法
4.调用
关键代码:
@Autowired
private CodeService codeService;
ResultData resultData = new ResultData(this.codeService.getProjectChildrenByPrefix(projectName))