我有 - 或更确切地说,有一个在Intellij中运行的工作弹簧应用程序。它包含用@Configuration
注释的几个类和几个@Component
bean。在某个时候,发生了以下情况:
-
Intelli开始在代码编辑器中显示错误,称" 无法自动。但是有一些用
@Component
注释的豆。 -
未达到特定
@Component
bean的构造函数中的断点。但这并不是所有@Component
bean。 -
在调试模式下运行时,即使调试器以前停在那里,也未达到某些
@Configuration
文件中的断点。如果使用这些@Component
bean之一将应用程序自动化,则该应用程序将失败。 -
该应用程序启动没有错误,但显然没有在
@Configuration
类中配置的几种bean。
包含运行Spring Boot应用程序的主要方法的类用@SpringBootApplication
注释。@Component
类与本类相同的包中的类别,甚至可以自动化,甚至可以在其他软件包中的类中进行自动。
我不知道代码或项目中会更改的任何内容。
在 file->项目设置 ->模块, spring应用程序上下文下,现在选择了所有@Configuration
文件。但是,这没有什么区别。
也尝试了构建 ->重建项目。
居住在类的软件包没有更改。有人见过这样的东西吗?
谢谢
如果很少的类未被识别@component。那可能是这些类不在同一包中的情况。您必须观察到与@springbootapplication的同一软件包下的类,因为@springbootapplication @springbootapplication被识别,因为@springbootapplication在软件包上定义了一个自动@componentscan。
。因此,在某些其他软件包中定义的其他类别未识别,因为这些类的软件包没有@componentscan。
您可以执行以下操作以使这些类识别(添加其他不直接在@springbootapplication的层次结构下的软件包(:
@ComponentScan({"com.example.springboot.anything","com.example.springboot.somethingelse"})
@SpringBootApplication
public class AnySpringBootApplication {
我敢肯定这不是常见的情况,但是对我来说,问题是我的班级有一个相对通用的名称。尽管它位于ComponentScan中提到的软件包中,但与所有其他类别的类别相同的级别,我一直存在ApplicationContext无法加载的问题。在我重命名的课程后,我发现org.springframework中的其他两个类别具有相同的名称。