openFeign在微服务中的使用
2020-09-08 本文已影响0人
半日孤独
实现的是一个用户服务调用员工服务的某个接口
openfeifn默认已集成ribbon
启动类
@EnableFeignClients //用于加载项目下的feign客户端
@MapperScan({"com.gz.hc.common.log.dao"}) //我需要加载公共项目中的dao,公共项目不可启动
@SpringBootApplication(scanBasePackages = {"com.gz.hc.*"}) //扫描其他项目下的类
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class, args);
}
}
feignApi接口
@FeignClient(name = "hc-emp") //指定客户端名称,还可配置降级处理类
@RequestMapping("emp/post") //配置的接口要和员工服务一致
@Service
public interface EmployeeApi {
@PostMapping("/selectEmp") //配置的接口要和员工服务一致
String selectEmp( String userId);
}
调用
@Autowired
private EmployeeApi employeeApi;
private void getJobNum() {
Emp emp = new Emp();
String empString = employeeApi.selectEmp(emp);
}
员工服务
@PostMapping("emp/post/selectEmp")
public String selectEmp(@RequestBody EmployeeParam emp) {
return "";
}
错误
Error creating bean with name 'ribbonLoadBalancingHttpClient'
或者 ribbonLoadBalancingHttpClient' parameter 2
原因:jar包冲突
解决办法
<!--openfeign,使用时得排出com.netflix.archaius,不然会出现冲突-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<exclusions>
<exclusion>
<groupId>com.netflix.archaius</groupId>
<artifactId>archaius-core</artifactId>
</exclusion>
</exclusions>
</dependency>