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

时间:2018-02-26 19:34:19

标签: spring spring-boot intellij-idea

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

  1. Intelli开始在代码编辑器中显示错误,声明" 无法自动装配。没有&xxx; xxx'找到类型"。但是有些这样的bean用@Component注释。

  2. 未达到特定@Component bean的构造函数中的断点。但对于所有@Component bean来说并非如此。

  3. 在调试模式下运行时,即使调试器之前停止,也未达到某些@Configuration个文件中的断点。如果应用程序与这些@Component bean之一自动装配,则应用程序将失败。

  4. 应用程序启动时没有错误,但显然没有调用@Configuration类中配置的几个bean。

  5. 包含运行Spring Boot应用程序的main方法的类使用@SpringBootApplication进行注释。与此类位于同一个包中的@Component类被识别,并且可以自动装配,甚至可以自动连接到其他包中的类中。

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

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

    还尝试了构建 - >重建项目

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

    由于

1 个答案:

答案 0 :(得分:3)

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

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

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

@ComponentScan({"com.example.springboot.anything","com.example.springboot.somethingelse"})
@SpringBootApplication
public class AnySpringBootApplication {