Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我应该在构造函数上声明bean?_Java_Spring_Spring Boot - Fatal编程技术网

Java 为什么我应该在构造函数上声明bean?

Java 为什么我应该在构造函数上声明bean?,java,spring,spring-boot,Java,Spring,Spring Boot,我在项目a上有一个a级服务: public class ServiceA { private ModelA modelA; public ServiceA(ModelA modelA) { this.modelA = modelA; } } 来自其他本地库(外部库)的modelA。modelA有@Component注释 运行此代码时,在ModelA上找不到错误bean。我在project-a上使用add@Bean为ModelA求解。

我在项目a上有一个a级服务:

public class ServiceA {
    
    private ModelA modelA;
    
    public ServiceA(ModelA modelA) {
        this.modelA = modelA;
    }
}
来自其他本地库(外部库)的modelA。modelA有@Component注释

运行此代码时,在ModelA上找不到错误bean。我在project-a上使用add@Bean为ModelA求解。
我为什么要加豆子?因为ModelA依赖于外部库?我能理解这个案例的任何参考链接吗?我想了解这个代码。谢谢你

第一条评论最有可能回答你的问题; 明确地
项目中配置的组件扫描不包括包含
modelA
类的包。

是,这是因为modelA组件位于外部库中。默认情况下,Spring Boot扫描带有
@SpringBootApplication
-注释类的包和子包的组件。在任何配置类上使用
@ComponentScan(basePackages=//多个包)
都会有所帮助。因此,如果将basePackages与modelA包放在一起,我不应该将@Bean放在modelA上,对吗?我学习的任何链接参考?将ServiceA和ModelA类的包添加到您的问题中。此外,在模块中包括组件扫描配置。