在 IntelliJ IDEA 中,我收到以下错误:无法自动装配。未找到“ExternalClass”类型的 bean。检查信息:检查 bean 类中的自动装配问题背景:我提取了一部分代码,并将其作为工件上传,当我尝试在“主”代码中使用它时,出现错误,并且无法使用 maven 进行编译。@Autowiredpublic ClassName (ExternalClass externalClass){ this.externalClass = externalClass;}该工件是 POM 文件中的一个依赖项,它在自动完成时显示良好。我尝试了几个类,每次都出现错误。
2 回答
jeck猫
TA贡献1909条经验 获得超7个赞
您需要@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 位于扫描路径中(因此有资格进行自动装配)。当您将它们移动到不再是这种情况的不同模块中时,您需要相应地调整扫描路径。
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
我最终发现了这个问题,并正在分享以防其他人遇到同样的错误。为了使 autowire 和 spring 正常工作,工件需要与主项目相同的包结构。示例:如果主项目包结构为:
com.domainname.something.myproject
工件应该是:
com.domainname.something.myproject.artifactname
添加回答
举报
0/150
提交
取消