我希望有人能给我一些提示,因为谷歌对我帮助不大。我想从 Artifactory 下载一个 jar,并从我的 java 代码中运行它,但是在这个简单的步骤中我遇到了一些困难。这是我无法工作的 Maven 依赖项有了这种依赖关系,Maven 就知道我的 java 文件的 groupId、artifactId 和版本。至于 Scope 字段,我看到它可以是 compile、provided、runtime、system 或 test。该 jar 文件代表另一个模块,它是一个应用程序,我想从代码中处理它,我在构建项目时不希望该文件有任何特定状态,我只想下载它,并在何时使用它我需要它,但它必须在当前项目中下载。现在,有了这个maven依赖,当我构建项目时,jar文件将从Artifactory下载,但最后我得到一个错误:原因:org.springframework.context.annotation.ConflictingBeanDefinitionException:bean 类 [com.cgm.user.impl.UserManagerImpl] 的注释指定的 bean 名称“userManagerImpl”与现有的、不兼容的同名和类 bean 定义冲突 [ com.cgm.authentication.impl.UserManagerImpl]所以,Spring 不知道该选择什么;我认为一种解决方案是重命名项目中的所有 bean,但我不能这样做。有什么建议么?
1 回答

小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
对于您所指出的,问题是因为您有多个相同类型的 bean。
您可以将@Qualifier与@Autowired一起使用。事实上,如果发现不明确的 bean 类型,spring 会要求您明确选择 bean,在这种情况下您应该提供限定符
例如,在以下情况下,有必要提供一个限定符
@Component
@Qualifier("staff")
public Staff implements Person {}
@Component
@Qualifier("employee")
public Manager implements Person {}
@Component
public Payroll {
private Person person;
@Autowired
public Payroll(@Qualifier("employee") Person person){
this.person = person;
}
}
如果它是项目的一部分,另一种选择是在类定义中使用@Qualifier注释。
添加回答
举报
0/150
提交
取消