1.Feign使用步骤
参考servicecloud-consumer-dept-80 新建servicecloud-consumer-dept-feign
servicecloud-consumer-dept-feign工程pom.xml修改,主要添加对feign的支持
Springboot 2.X
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
修改servicecloud-api工程 pom 添加依赖
Sptingboot 2.X
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
新建DeptClientService接口并新增注解@FeignClient
package com.goolecloud.springcloud.service;
import com.goolecloud.springcloud.entities.Dept;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import java.util.List;
@FeignClient(value = "SERVICECLOUD-DEPT", fallbackFactory = DeptClientServiceFallbackFactory.class)
//,fallbackFactory = DeptClientServiceFallbackFactory.class
public interface DeptClientService {
@RequestMapping(value = "/dept/add", method = RequestMethod.POST)
public boolean add(@RequestBody Dept dept);
@RequestMapping(value = "/dept/get/{id}", method = RequestMethod.GET)
public Dept get(@PathVariable("id") Long id);
@RequestMapping(value = "/dept/list", method = RequestMethod.GET)
public List<Dept> list();
}
servicecloud-consumer-dept-feign工程修改Controller,添加上一步新建的DeptClientService接口
package com.goolecloud.springcloud.controller;
import com.goolecloud.springcloud.entities.Dept;
import com.goolecloud.springcloud.service.DeptClientService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
public class DeptController {
@Autowired
DeptClientService service;
@RequestMapping(value = "/consumer/add", method = RequestMethod.POST)
public boolean add(@RequestBody Dept dept)
{
return service.add(dept);
}
@RequestMapping(value = "/consumer/get/{id}", method = RequestMethod.GET)
public Dept get(@PathVariable("id") Long id)
{
return service.get(id);
}
@RequestMapping(value = "/consumer/list", method = RequestMethod.GET)
public List<Dept> list()
{
System.out.println("111111");
return service.list();
}
}
servicecloud-consumer-dept-feign工程修改主启动类
@EnableEurekaClient
@EnableFeignClients(basePackages = "com.goolecloud.springcloud")
测试
启动3个eureka集群
启动3个部门微服务8001/8002/8003
启动Feign自己启动
http://localhost/consumer/dept/list
http://localhost:8888/consumer/list
Feign自带负载均衡配置项