在IntelliJ IDEA中,出现以下错误:
无法自动接线。找不到“ ExternalClass”类型的bean。 检查信息:检查bean类中的自动装配问题
背景:我提取了一部分代码,并将其作为工件上传,当我尝试在“主要”代码中使用它时,出现了错误,并且无法使用maven进行编译。
@Autowired
public ClassName (ExternalClass externalClass){
this.externalClass = externalClass;
}
工件是POM文件中的依赖项,它在自动完成时显示良好。
我尝试了几种方法,每次都会出现错误。
答案 0 :(得分:1)
您需要在提取的模块中定义@Configuration
并提供模块的扫描路径。
@Configuration
// add any packages where you have bean definitions here (ex: ExtractedClass package)
@ComponentScan(basePackages = {"..."})
public class ExtractedConfig {
// ...
}
然后,在使用依赖项的模块中,导入配置。
@Configuration
@Import(ExtractedConfig.class)
public class MainConfig {
// ...
}
重构之前您没有问题,因为提取的bean在扫描路径中(因此可以自动装配)。将它们移到其他模块中后,情况就不再如此,您需要相应地调整扫描路径。
答案 1 :(得分:0)
我最终发现了这个问题,并且在别人遇到相同错误的情况下正在共享。 为了使自动装配和弹簧正常工作,工件需要与主项目相同的包装结构。 例: 如果主项目包结构为:
com.domainname.something.myproject
工件应为:
com.domainname.something.myproject.artifactname