【发布时间】:2020-09-03 11:29:51
【问题描述】:
我正在使用 proguard 来混淆我的代码并处理重复的 bean 定义名称,我正在使用自定义 bean 名称生成器来注册具有完全限定名称的 bean。
public static class CustomGenerator implements BeanNameGenerator {
@Override
public String generateBeanName(BeanDefinition definition, BeanDefinitionRegistry registry) {
return definition.getBeanClassName();
}
}
然后我使用自定义名称生成器创建应用程序上下文
ApplicationContext ctx = new SpringApplicationBuilder(DataQualityApplication.class)
.beanNameGenerator(new CustomGenerator())
.run(args);
然而,问题是 bean 现在是使用它们相应的类类型注册的,而不是通过 @Qualifier 或 @Component 中提供的限定符名称来注册的。
如何在我的项目中实现这一点?
【问题讨论】:
-
只需扩展默认的 (
AnnotationBeanNameGenerator) 并覆盖buildDefaultBeanName方法以使用您拥有的逻辑。这将保持原始行为,并且当没有明确的名称使用完整的类名时。 -
是的,使用确切的方法解决了问题
标签: java spring spring-boot proguard