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 "";
    }

错误

\color{red}{ 报错: } 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>
上一篇下一篇

猜你喜欢

热点阅读