SpringCloud Feign客户端应用

2022年6月4日07:59:19

一、在common项目里建一个service(实际项目肯定是多个service)作为Feign客户端,用Feign客户端来调用服务器提供者,当然可以配置负载均衡;Feign客户端定义的目的,就是为了方便给其他项目调用;

二,修改 springcloud-common
pom.xml引入Feign依赖:

<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-feign</artifactId>
</dependency>

三.创建FeignClientService服务接口:
FeignClient,同时指定了调用的服务名称PROVIDER

package com.li.springcloud.common.feign;
import java.util.List;
import java.util.Map;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import com.li.springcloud.common.model.Student;
/**
 * Feign接口客户端
 * 
 * @author Administrator
 *
 */
 //value对应生产者提的服务名称
@FeignClient(value = "PROVIDER")
public interface FeignClientService {
    /**
     * 查询用户信息
     * 
     * @return
     */
    @GetMapping(value = "/provider/list")
    public List<Student> list();
}

四、新建一个Feign消费者项目springcloud-consumer-feign-1
1.代码都复制springcloud-consumer-1项目一份,包括pom.xml,pom.xml里加下 feign依赖;
2.修改启动类名称,加注解启动类名称改下,改成ConsumerFeignApplication同时加个注解@EnableFeignClients支持下Feign(因为feign客户端是写到common项目中所以扫描的时候要指定扫描包目录:@EnableFeignClients({“com.li.springcloud.common.feign”}));
3.修改springcloud-consumer-feign-1项目中的Contrller类:

package com.li.spingcloud.consumerfeign.controller;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import com.li.springcloud.common.feign.FeignClientService;
import com.li.springcloud.common.model.Student;
@RestController
public class ConsumerController {
    @Autowired
    private FeignClientService feignClientService;
    /**
     * 查询数据库
     * 
     * @return
     */
    @RequestMapping(value = "/consumer/list", produces = "application/json; charset=utf-8", method = {
            RequestMethod.POST, RequestMethod.GET })
    public List<Student> list() {
        System.out.println("调用消费者。。。。。");
        return feignClientService.list();
    }
}

4.用Fiegn,所以把restTemplate去掉,改成注入service,调用service方法来实现服务的调用;
五、测试:
1.先启动Eureka集群或者单机;
2.在启动服务生产者集群或者单机;
3.然后启动springcloud-consumer-feign-1服务消费者;

  • 作者:平川大叔
  • 原文链接:https://blog.csdn.net/lifupingcn/article/details/88029407
    更新时间:2022年6月4日07:59:19 ,共 2067 字。