Feign负载均衡
Feign是声明式的web service客户端,Spring Cloud集成了Ribbon和Eureka,可以在使用Feign时提供负载均衡的http客户端。
相较于Ribbon,Feign通过创建接口
和注解
使用,即可完成对服务提供方的接口绑定,简化了使用Spring Cloud Ribbon时,自动封装服务调用客户端的开发量。
具体实例:
1、导入依赖
<dependencies>
<!--feign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.4.7.RELEASE</version>
</dependency>
<!--Ribbon-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
<version>1.4.7.RELEASE</version>
</dependency>
<!--Eureka-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.7.RELEASE</version>
</dependency>
<dependency>
<groupId>com.sw</groupId>
<artifactId>springcloud-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
2、Controller
package com.sw.springcloud.controller;
import com.sw.springcloud.pojo.Dept;
import com.sw.springcloud.service.DeptClientService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import java.util.List;
/**
* @Author suaxi
* @Date 2020/12/28 22:16
*/
@RestController
public class DeptConsumerController {
@Autowired
private DeptClientService client;
@RequestMapping(value = "/consumer/dept/add",produces = {"application/json;charset=UTF-8"})
public boolean add(Dept dept){
return this.client.addDept(dept);
}
@RequestMapping(value = "/consumer/dept/get/{id}",produces = {"application/json;charset=UTF-8"})
public Dept get(@PathVariable("id")Long id){
return this.client.findById(id);
}
@RequestMapping(value = "/consumer/dept/list",produces = {"application/json;charset=UTF-8"})
public List<Dept> list(){
return this.client.findAll();
}
}
3、注册到Spring容器中
package com.sw.springcloud.config;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
/**
* @Author suaxi
* @Date 2020/12/28 22:15
*/
@Configuration
public class ConfigBean {
@Bean
@LoadBalanced //注册Ribbon
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
4、SpringBoot启动类开启Feign注解
package com.sw.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
/**
* @Author suaxi
* @Date 2020/12/28 22:29
*/
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients(basePackages = {"com.sw.springcloud"})
public class FeignDeptConsumer_80 {
public static void main(String[] args) {
SpringApplication.run(FeignDeptConsumer_80.class,args);
}
}
评论 (0)