本文共 2037 字,大约阅读时间需要 6 分钟。
feign是一个声明式的伪HTTP客户端,它是写Http客户端变的更简单。
因为使用Feign只需要创建一个接口并添加注解,它具有可插拔的特性。Feign支持可插拔的解码器和编码器。Feign默认集成了Ribbon,Nacos也很好的兼容了Feign。默认实现了负载均衡的效果。
服务提供者是不需要做任何配置的,正常的写业务代码,主要在服务消费者进行配置。
spring: application: name: nacos-consumer cloud: nacos: discovery: server-addr: 127.0.0.1:8848 #注册中心地址 config: server-addr: 127.0.0.1:8848 #注册中心地址server: port: 17587
@SpringBootApplication// 开启服务注册@EnableDiscoveryClientpublic class NacosConsumerApplication { public static void main(String[] args) { SpringApplication.run(NacosConsumerApplication.class, args); }}
public class TestService { public ListgetList() { List list= Arrays.asList("1", "2", "3","4","5","6","7","8","0"); return list; }}
@RestController@RefreshScopepublic class TestController { @GetMapping("/getlist") public List getList() { return testService.getList(); }}
客户端需要导入feign的依赖
org.springframework.cloud spring-cloud-starter-openfeign
server: port: 17537spring: application: name: nacos-provider cloud: nacos: discovery: server-addr: 127.0.0.1:8848 #注册中心地址 config: server-addr: 127.0.0.1:8848 #注册中心地址
@SpringBootApplication// 开始服务注册@EnableDiscoveryClient// 开启feign客户端@EnableFeignClientspublic class ProviderNacosApplication { public static void main(String[] args) { SpringApplication.run(ProviderNacosApplication.class, args); }}
定义一个接口,添加**@FeignClient**注解,name指定服务名。
@FeignClient(name = "nacos-consumer")public interface FeignService { @GetMapping("/getlist") List getlist();}
通过服务接口,调用对应的方法
@RestController@RefreshScopepublic class EchoController { @Autowired private FeignService feignService; @GetMapping("/list") public List getServiceList() { return feignService.getlist(); }}
转载地址:http://ebfoi.baihongyu.com/