外部Jar不起作用“无法自动接线”

时间:2018-11-01 08:36:26

标签: java spring intellij-idea autowired artifact

在IntelliJ IDEA中,出现以下错误:

  

无法自动接线。找不到“ ExternalClass”类型的bean。   检查信息:检查bean类中的自动装配问题

背景:我提取了一部分代码,并将其作为工件上传,当我尝试在“主要”代码中使用它时,出现了错误,并且无法使用maven进行编译。

@Autowired
public ClassName (ExternalClass externalClass){
   this.externalClass = externalClass;
}

工件是POM文件中的依赖项,它在自动完成时显示良好。

我尝试了几种方法,每次都会出现错误。

2 个答案:

答案 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