openfegion使用
1、引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2、开启fegin功能
在启动类添加注解,开启feign远程调用
@EnableFeignClients(basePackages ="自定义feign接口包的相对路径")
3、编写被调用标题远程接口
声明一个接口并使用注解:
@FeignClient("gulimail-product")
该注解声明远程调用的微服务名称,即应用配置spring.application.name的值。
在该接口声明一个抽象方法,该抽象方法相当于被访问服务的controller层对外暴露的接口,且保证与被调用服务方法一致,抽象方法映射勿遗漏Controller层的路径。
原服务
@RestController
@RequestMapping("product/brand")
public class BrandController {
@Autowired
private BrandService brandService;
@RequestMapping("/brandOrder")
public R getBrand(){
BrandEntity brandEntity = new BrandEntity();
brandEntity.setName("华为");
return R.ok().put("brand",brandEntity);
}
抽象方法
@FeignClient("gulimail-product")
public interface GulimaiProductService {
@RequestMapping("/product/brand/brandOrder")
R getBrand();
}
备注:fegin不支持服务名使用下划线连接
gulimail_product
java.lang.IllegalStateException: Service id not legal hostname (gulimail_product)
支持中划线
gulimail-product
由于版本原因启动失败可参考其他优秀作者的解决方式
no feign Client for loadBalancing defined
注意:加入spring-cloud-loadbalancer依赖 并且在nacos中排除ribbon依赖,不然loadbalancer无效。