引入OpenFeign
添加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-
discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
定义配置
server.port=6083
# Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html
spring.application.name=service-consumer
# Nacos 服务发现与注册配置,其中子属性 server-addr 指定 Nacos 服务器主机和端口
spring.cloud.nacos.discovery.server-addr=localhost:8848
# 注册到 nacos 的指定 namespace,默认为 public
spring.cloud.nacos.discovery.namespace=public
在主类或者配置类上添加注解以支持OpenClient应用
@EnableFeignClients // 激活 @FeignClient
@EnableDiscoveryClient
@SpringBootApplication
public class Consumer3Application {
public static void main(String[] args) {
SpringApplication.run(Consumer3Application.class, args);
}
}
定义http伪客户端接口
@FeignClient("service-provider") // 指向服务提供者应用
public interface ProviderClient {
@GetMapping("/users/hello")
public String sayHello(@RequestParam("username") String username);
服务提供者
@RestController
@RequestMapping("/users")
public class UserController {
@RequestMapping("/hello")
public String sayHello(@RequestParam String username){
return "Provider:" + username;
}
}
定义控制器,通过feign接口调用远程的服务提供者
@RestController
@RequestMapping("/consumer")
public class ConsumerController {
@Autowired
private ProviderClient providerClient;
@GetMapping("/{name}")
public String test(@PathVariable String name){
String res = providerClient.sayHello(name);
return res;
}
}
测试