Spring Boot的新手。
我们在多个基本依赖项中都有可重用的bean。由于我们需要这些可重用的功能,因此我们要在pom.xml中继承这些jar。
例如:
Jar1:
ClassName:UserInfo,RequestInterceptors,ClassName3,ClassName4,ClassNameN。 PackageName:com.somename1.base.comps
Jar2:
ClassName:UserInfo,RequestInterceptors,ClassName3,ClassName4,ClassNameN。 PackageName:com.somename2.base.comps
由于类名相似,因此在构建时会产生冲突问题。
不幸的是,我们无法更改任何类名,因为其他团队正在使用这些jar。无权创建这些罐子的另一个版本。
有什么办法可以同时包含这两个jar,而不会在@EnableAutoConfiguration
或@ComponentScan
中排除这些冲突的组件
注释?
有人可以在这里分享一些建议吗?
答案 0 :(得分:0)
这里的解决方案是命名您的bean。发生冲突的原因是类的名称相同。例如:
@Configuration
public class Config{
public com.somename2.base.comps.UserInfo somename2UserInfo(){
return new com.somename2.base.comps.UserInfo();
}
public com.somename1.base.comps.UserInfo somename1UserInfo(){
return new com.somename1.base.comps.UserInfo();
}
}
然后将这些bean分别命名为somename1UserInfo
和somename2UserInfo
,您可以在自动装配时使用这些名称,例如:
public class SomeImpl{
@Autowired
@Qualifier("somename1UserInfo")
UserInfo userInfo;
/*
* Or you can do this
*/
@Resource(name = "somename1UserInfo")
UserInfo theSameUserInfo
}
这将允许您自动装配在任何类中使用的bean。在类使用的每个位置都必须声明一个限定符可能并不理想,因此,如果主要使用一种实现,请考虑研究@Primary
批注。