我有 - 或者更确切地说 - 一个有效的Spring应用程序,在IntelliJ中运行。它包含几个用@Configuration
注释的类和几个@Component
bean。在某些时候,发生了以下情况:
@Component
注释。@Component
bean的构造函数中的断点。但对于所有@Component
豆而言,情况并非如此。@Configuration
文件中的断点。如果它与这些@Component
bean之一自动装配,应用程序将失败。@Configuration
类中配置的几个bean。包含运行Spring Boot应用程序的main方法的类使用@SpringBootApplication
进行注释。生活在与此类相同的包中的@Component
类被识别并且可以自动装配,甚至可以自动装配到其他包中的类中。
我不知道代码或项目中会发生什么变化。
在文件 - >项目设置 - >模块下,在Spring Application Context下,现在已选择所有@Configuration
文件。然而,这没有任何区别。
还试过Build - > Rebuild Project。
类所在的包未更改。以前有人见过这样的事吗?
谢谢
如果几个类没有得到@Component的识别。那么可能是那些类不属于同一个包的情况。您必须观察到与@SpringBootApplication的Main类相同的包下的类已被@Component识别,因为@SpringBootApplication在包上定义了一个自动的@ComponentScan。
因此,其他包中定义的其他类无法识别,因为这些类的包没有@ComponentScan。
您可以执行以下操作以识别这些类(添加不直接位于@SpringBootApplication层次结构下的其他包):
@ComponentScan({"com.example.springboot.anything","com.example.springboot.somethingelse"})
@SpringBootApplication
public class AnySpringBootApplication {