Spring没有认识到一些@Configuration和@Component类

问题描述 投票:1回答:1

我有 - 或者更确切地说 - 一个有效的Spring应用程序,在IntelliJ中运行。它包含几个用@Configuration注释的类和几个@Component bean。在某些时候,发生了以下情况:

  1. Intelli开始在代码编辑器中显示错误,指出“无法自动装配。找不到'xxx'类型的bean”。但是有这样的豆子用@Component注释。
  2. 未达到特定@Component bean的构造函数中的断点。但对于所有@Component豆而言,情况并非如此。
  3. 在调试模式下运行时,即使调试器在之前停止,也未达到某些@Configuration文件中的断点。如果它与这些@Component bean之一自动装配,应用程序将失败。
  4. 应用程序启动时没有错误,但显然没有调用@Configuration类中配置的几个bean。

包含运行Spring Boot应用程序的main方法的类使用@SpringBootApplication进行注释。生活在与此类相同的包中的@Component类被识别并且可以自动装配,甚至可以自动装配到其他包中的类中。

我不知道代码或项目中会发生什么变化。

在文件 - >项目设置 - >模块下,在Spring Application Context下,现在已选择所有@Configuration文件。然而,这没有任何区别。

还试过Build - > Rebuild Project。

类所在的包未更改。以前有人见过这样的事吗?

谢谢

spring spring-boot intellij-idea
1个回答
3
投票

如果几个类没有得到@Component的识别。那么可能是那些类不属于同一个包的情况。您必须观察到与@SpringBootApplication的Main类相同的包下的类已被@Component识别,因为@SpringBootApplication在包上定义了一个自动的@ComponentScan。

因此,其他包中定义的其他类无法识别,因为这些类的包没有@ComponentScan。

您可以执行以下操作以识别这些类(添加不直接位于@SpringBootApplication层次结构下的其他包):

@ComponentScan({"com.example.springboot.anything","com.example.springboot.somethingelse"})
@SpringBootApplication
public class AnySpringBootApplication {
© www.soinside.com 2019 - 2024. All rights reserved.