use*_*610 5 spring intellij-idea spring-boot
我有 - 或者更确切地说有 - 一个正在运行的 Spring 应用程序,在 IntelliJ 中运行。它包含几个用 、 注释的类@Configuration和几个@Componentbean。在某个时刻,发生了以下情况:
Intelli 开始在代码编辑器中显示错误,指出“无法自动装配。未找到‘xxx’类型的 bean ”。但也有这样的 Bean 带有注释@Component。
@Component未达到特定 bean 构造函数中的断点。但并非所有豆类都是如此@Component。
在调试模式下运行时,@Configuration无法到达某些文件中的断点,即使调试器之前已停止在那里。如果应用程序使用这些@Componentbean 之一自动装配,则应用程序将会失败。
应用程序启动时没有错误,但显然没有在@Configuration被调用的类中配置多个 bean。
包含运行 Spring Boot 应用程序的 main 方法的类用 进行注释@SpringBootApplication。@Component与此类位于同一包中的类会被识别并可以自动装配,甚至可以自动装配到其他包中的类中。
我不知道代码或项目中有任何内容会发生变化。
在File -> Project Settings -> Modules下,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 {
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5777 次 |
| 最近记录: |