我有 - 或者更确切地说 - 在IntelliJ中运行的一个有效的Spring应用程序。它包含几个用@Configuration
注释的类和几个@Component
bean。在某些时候,发生了以下情况:
Intelli开始在代码编辑器中显示错误,声明" 无法自动装配。没有&xxx; xxx'找到类型"。但是有些这样的bean用@Component
注释。
未达到特定@Component
bean的构造函数中的断点。但对于所有@Component
bean来说并非如此。
在调试模式下运行时,即使调试器之前停止,也未达到某些@Configuration
个文件中的断点。如果应用程序与这些@Component
bean之一自动装配,则应用程序将失败。
应用程序启动时没有错误,但显然没有调用@Configuration
类中配置的几个bean。
包含运行Spring Boot应用程序的main方法的类使用@SpringBootApplication
进行注释。与此类位于同一个包中的@Component
类被识别,并且可以自动装配,甚至可以自动连接到其他包中的类中。
我不知道代码或项目中会发生什么变化。
在文件 - >下项目设置 - > Spring Application Context 下的模块现已选择了所有@Configuration
个文件。然而,这没有任何区别。
还尝试了构建 - >重建项目。
类所在的包没有更改。以前有人见过这样的事吗?
由于
答案 0 :(得分:3)
如果没有几个类被识别@Component。那么可能是那些类不属于同一个包的情况。您必须观察到与@SpringBootApplication的Main类相同的包下的类已被@Component识别,因为@SpringBootApplication在包上定义了一个自动的@ComponentScan。
因此,其他包中定义的其他类无法识别,因为这些类的包没有@ComponentScan。
您可以执行以下操作来识别这些类(添加不直接位于@SpringBootApplication层次结构下的其他包):
@ComponentScan({"com.example.springboot.anything","com.example.springboot.somethingelse"})
@SpringBootApplication
public class AnySpringBootApplication {