使用fegin调用远程服务时,启动报类没有被找到

异常信息如下:
使用fegin调用远程服务时,启动报类没有被找到_第1张图片

一般来说,当某个类需要注入,而IOC容器里又没有这个类的实例时,就会报这个错。

由于使用fegin的接口类是没有加什么@Component等标注需要注入容器的注解,如下:
使用fegin调用远程服务时,启动报类没有被找到_第2张图片
类上面只有@FeignClient注解,看看该注解详情,如下:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package org.springframework.cloud.openfeign;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.core.annotation.AliasFor;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FeignClient {
    @AliasFor("name")
    String value() default "";

    /** @deprecated */
    @Deprecated
    String serviceId() default "";

    String contextId() default "";

    @AliasFor("value")
    String name() default "";

    String qualifier() default "";

    String url() default "";

    boolean decode404() default false;

    Class<?>[] configuration() default {};

    Class<?> fallback() default void.class;

    Class<?> fallbackFactory() default void.class;

    String path() default "";

    boolean primary() default true;
}

会发现虽然属性很多,但是没有一个能够起到标注需要注入容器的效果。

所以需要换个思路,让项目启动时扫描到使用fegin的包然后把类实例注入容器,刚好有个@EnableFeignClients注解能够提供这个功能,如下:
使用fegin调用远程服务时,启动报类没有被找到_第3张图片
之后项目成功启动。

总结

简单说的话,其实就是在启动类上加个@EnableFeignClients注解与要扫描的包路径就好。

你可能感兴趣的:(Spring,Cloud)