在proguard混淆之后,与同名和类的现有的,不兼容的bean定义冲突

时间:2012-04-24 14:20:38

标签: spring obfuscation proguard

在Proguard混淆之后,我收到以下错误:

  

从ServletContext资源解析XML文档时发生意外异常   [/WEB-INF/applicationContext.xml的];嵌套异常是   java.lang.IllegalStateException:注释指定的bean名称'a'   for bean class [com.company.project.b.a.a.a]与现有的,   同名和类的非兼容bean定义   [com.company.project.a.a]

我正在使用基于注释的spring配置,如何使用Proguard避免使用两个具有相同名称的类,因为Spring不允许两个bean具有相同的名称。

3 个答案:

答案 0 :(得分:14)

我不确定这是否是您想要的,但您可以在@Component中指定bean名称(以及构造型@Repository,@ Service和@Controller)值:

@Component("myBeanName")
public class MyBean {

}

答案 1 :(得分:1)

另一个原因;在类路径中可能有不同版本的Spring,例如spring 2.x with spring 3.x.在这种情况下,豆类似乎加载了两次。如果您使用maven,请检查模块是否未导入旧版本的Spring(mvn依赖项:树)并通过排除所涉及的弹簧工件(排除项)将其删除。

答案 2 :(得分:0)

我遇到了同样的问题,没有其他帮助。有时,如果您四处移动您的班级,并且它引用的是旧班级,即使它们不存在,也会出现问题。

在这种情况下,只需执行以下操作:

mvn eclipse:clean

mvn eclipse:eclipse

这对我来说很好。