我希望有人可以给我一些提示,因为google帮不了我太多。 我想从Artifactory下载一个jar,并从我的Java代码运行它,但是在这个简单的步骤上遇到了一些困难。
this is the maven dependency that I cannot make work
有了这种依赖性,Maven知道了我的Java文件的groupId,artifactId和版本。至于“作用域”字段,我看到它可以被编译,提供,运行时,系统或测试。
那个jar文件代表另一个模块,它是一个应用程序,我想从代码中处理它,我在构建项目时不希望该文件有任何特定状态,我只想下载它,并在需要时使用它,但必须在当前项目中下载它。 现在,有了该maven依赖关系,当我构建项目时,将从Artifactory下载jar文件,但最终出现错误:
原因:org.springframework.context.annotation.ConflictingBeanDefinitionException:注释:bean类[com.cgm.user.impl.UserManagerImpl]的注释指定的bean名称'userManagerImpl'与现有的,不兼容的bean定义冲突相同名称和类别[com.cgm.authentication.impl.UserManagerImpl]
因此,Spring不知道该选择什么。我认为一种解决方案是重命名项目中的所有bean,但我负担不起。
有什么建议吗?
非常感谢!
答案 0 :(得分: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 批注(如果它是项目的一部分)。