spring-cloud整合openfeign
- pom文件中引入依赖
<!-- SpringCloud Openfeign -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- LoadBalancer 负载均衡-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
- 启动类加上 @EnableFeignClients 注解,将 RestTemplate 和 客户端负载均衡结合使用,在启动类中注册Bean
@Bean
@LoadBalanced//默认使用轮询方式进行负载均衡
public RestTemplate restTemplate(){
return new RestTemplate();
}
3.如果说要调用另外一个服务下TestController 中的@GetMapping("/test"),前提是my-gateway这个服务已经注册进euaka或者nacos,则需要加上@FeignClient(“my-gateway”)//my-gateway代表要调用的服务名称
/*
@RestController
public class TestController {
@Resource
private TestService testService;
@GetMapping("/test")
public String test(){
return "test";
}
}
*/
@FeignClient("my-gateway")//my-gateway为要调用的服务名称 spring.application.name=my-gateway
public interface MyOpenFeignService {
@GetMapping(value = "/test")
public String test();
}
4.将MyOpenFeignService注入到本服务的controller,调用方法即可
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* @author ssy
* @date 2021/12/17 17:50
*/
@RestController
public class MyOpenFeignController {
//将MyOpenFeignService注入进来
@Resource
private MyOpenFeignService myOpenFeignService;
@GetMapping("/test")
public String test(){
return myOpenFeignService.test();
}
}
5.浏览器调用/test接口,看到返回“test”