NoSuchBeanDefinitionException:没有可用类型的合格 bean:预计至少有 1 个符合自动装配候选资格的 bean

Aar*_*esh 5 java spring external-dependencies autowired spring-boot

我正在尝试将 Spring 4.xx 迁移到 Spring boot,它依赖于外部 spring 2.5 jar 中的类。我已经进行了所有自动装配更改,下面是我的应用程序类

@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan(basePackages = { "com.xyz" })
public class MainApiApplication {

    public static void main(String[] args) {
        SpringApplication.run(MainApiApplication.class, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

外部 jar 中的依赖类存在于 com.xyz.abc 包下,因此我将主应用程序类放置在 com.xyz 包下,并在同一包下添加了组件扫描

这是我的组件类,其依赖项已自动装配

@Component
public class ComponentClassA {
    @Autowired
    private ComponentClassB currencyService;
}

@Component
public class ComponentClassB {

    @Autowired
    private DependentClass depClass;
}
Run Code Online (Sandbox Code Playgroud)

DependentClass 是我在本地附加和构建的外部依赖 jar 中存在的类

构建应用程序时,所有文件的编译都很好,并且构建成功生成。但是当我启动应用程序时,出现以下错误

 Field DependentClass in com.xyz.ComponentClassB required a bean of type 'com.xyz.common.util.DependentClass' that could not be found.
Run Code Online (Sandbox Code Playgroud)

我不明白找不到外部 jar 中的类的原因,因为我已经为包添加了组件扫描

DependentClass的定义如下

public class DependentClass extends ResourceClass<Map<String, Double>> {
            // Methods and logic
}
Run Code Online (Sandbox Code Playgroud)

是因为 DependentClass 正在扩展一个类吗?有人可以帮我找出错误的原因吗?

San*_*dev 6

上面DependentClass没有@Component注释。DependentClass因此,您需要通过 XML 或 Java 配置创建您自己的 bean 。

并且没有必要将主类放在与 相同的包下DependentClass