2

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

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

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

4

3 回答 3

16

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

@Component("myBeanName")
public class MyBean {

}
于 2012-04-24T15:31:48.877 回答
3

我遇到了同样的问题,没有其他任何帮助。有时,如果您移动了类并且它指的是旧类,即使它们不存在,有时也会出现问题。

在这种情况下,只需这样做:

mvn eclipse:clean

mvn eclipse:eclipse

这对我来说效果很好。

于 2019-05-03T11:29:35.893 回答
2

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

于 2013-11-19T15:18:35.217 回答