【微服务】feign使用
- 引入依赖
- 启动类配置注解
- 创建业务层
- 使用项目调用
- 可能会遇到的bug
01 引入依赖
- Feign是Spring Cloud提供的一个声明式的伪Http客户端, 它使得调用远程服务就像调用本地服务一样简单, 只需要创建一个接口并添加一个注解即可。
- 在需要使用feign的springboot的pom.xml下配置依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
02 springboot启动类配置注解
- 在被远程调用接口的springboot项目启动类上加@EnableFeignClients注解
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "com.mashang.tsorder.demos.web.service")
public class xxxApplication {}
03 创建业务层
- 在业务层编写调用接口
- @FeignClient(“ts-order”),这里写注册中的项目名(“ts-order”),我使用的注册中心是nacos,具体使用是这篇文章nacos的快速使用-CSDN博客
- 注入控制层
@FeignClient("ts-order")
public interface OrderFeignService {
@GetMapping("/order/testOrder")
public String orderTset();
}
04 使用项目调用
- 直接注入OrderFeignService即可正常使用
@RestController
@RequestMapping("/tsUser")
public class TsUserController {
@Autowired
private OrderFeignService orderFeignService;
@GetMapping("/test")
public String test(){
String s = orderFeignService.orderTset();
return "test:"+s;
}
}
05 可能会遇到的bug
1.com.netflix.client.ClientException
- 请检查配置中,这个bug意味着第三步创建业务层有问题,要么是@FeignClient(“ts-order”)和配置中心nacos不同,要么是这个项目没有在nacos中注册,检查配置中心
2.自动注入service失败
- 请检查TsUserController(使用)对应的springboot启动类配置注解,(basePackages = “com.mashang.tsorder.demos.web.service”)有问题,没有成功扫描到OrderFeignService类