springCloud(5)- Feign负载均衡

Feign

1.定义: feign是声明式的web service 客户端,它让微服务之间的调用变的更加简单了,类似于controller调用service,springCloud集成了Ribbon和Eureka,可在使用Feign时提供负载均衡的http客户端

**2.使用:**只需要创建一个接口,然后添加注解即可

​ 接口就是相当于在dao接口上加一个@feignClient注解。

然后在消费者那里的controller层就不需要使用restTemplate了。实现了面向接口编程

  • 依赖:

           <!--feign-->
            <dependency>
               <groupId>org.springframework.cloud</groupId>
               <artifactId>spring-cloud-starter-feign</artifactId>
               <version>1.4.7.RELEASE</version>
            </dependency>
    
  • 写方法(这里是在公共model中创建的)

    package com.zhang.service;
    
    import com.zhang.pojo.Dept;
    import org.springframework.cloud.openfeign.FeignClient;
    import org.springframework.stereotype.Component;
    import java.util.List;
    
    @Component
    // value为注册中心服务节点名称
    @FeignClient(value = "springcloud-provider-dept-8001")  
    public interface FeignService {
        // 对表进行基础操作
        Dept getByDno(Integer dno);
    
        int delectByDno(Integer dno);
    
        List<Dept> selectDept();
    
        boolean insertDept(Dept dept);
    }
    
  • 在消费者controller层进行调用,这里注意和使用RestTemplate的区别

package com.zhang.controller;

import com.zhang.pojo.Dept;
import com.zhang.service.FeignService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.client.RestTemplate;
import java.util.List;

@RestController
public class FeignController {
    @Autowired
    private RestTemplate restTemplate;
    // 将请求地址头定义成常量
    @Autowired
    private FeignService service;

    @RequestMapping("/consumer/select")
    public List<Dept> getSelect(){
        return service.selectDept();
    }
    @RequestMapping("/consumer/add")
    public boolean getAdd(Dept dept){
        return service.insertDept(dept);  //注意这里使用了post
    }
}
     ```

- 在消费者启动类中使用注解启动feign

  ```java
  package com.zhang;
  
  import org.springframework.boot.SpringApplication;
  import org.springframework.boot.autoconfigure.SpringBootApplication;
  import org.springframework.cloud.openfeign.EnableFeignClients;
  import org.springframework.context.annotation.ComponentScan;
  
  @SpringBootApplication
  @EnableFeignClients(basePackages ={"com.zhang.service"})   // 加载feign并启动
  /*@ComponentScan("com.zhang")*/
  public class SpringCloudConsumer80 {
      public static void main(String[] args) {
  
          SpringApplication.run(SpringCloudConsumer80.class,args);
      }
  }

3.调用微服务的两种方法:

​ 1.微服务名字(ribbon)----------符合Restful风格编程

​ 2.接口和注解(feign)------------- 面向接口编程

​ 两种都一样,就是方式不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值