Spring:如何调试BeanCreationNotAllowedException?

时间:2015-05-29 23:28:16

标签: java spring spring-4

我正在尝试将一个新的Spring bean添加到我的一个项目中。 bean是在另一个包中定义和创建的,如下所示:

@Configuration
public class UtilityBeans {
    public static String MY_BEAN_NAME = "my.bean.name";

    @Bean(name = MY_BEAN_NAME)
    public MyUtilBeanClass getMyBeanClass() {
        return new MyUtilBeanClass();
    }
}

我在我的其他包中使用它:

@Configuration
@Import({
    UtilityBeans.class
)}
...
    @Resource(name = UtilityBeans.MY_BEAN_NAME) 
    private MyUtilBeanClass myUtilBeans;

在运行时我得到:

ERROR 由以下原因引起:org.springframework.beans.factory.BeanCreationNotAllowedException:创建名为'my.bean.name'的bean时出错:当此工厂的单例处于销毁状态时不允许使用单例bean创建(不要从BeanFactory中请求bean)一个destroy方法实现!) ...

日志没有给我任何有用的信息,因为堆栈跟踪全部在Spring库中。我怎样才能找出失败的原因?是不正确的资源使用还是bean创建本身是错误的?

我正在使用带有JDK8的Spring-4。

1 个答案:

答案 0 :(得分:0)

这里的问题是,由于一些重构,我的spring配置中的两个不同点创建了bean,修复程序是删除重复的代码。我有相同的bean创建代码:

@Bean(name = MY_BEAN_NAME)
public MyUtilBeanClass getMyBeanClass() {
    return new MyUtilBeanClass();
}

...在另一个课程中,我有一半重构。 在这种情况下,我的错误是我没有grep所有生成的日志文件。异常被拆分,然后被分成2个不同的日志,一个用于服务器启动,另一个用于应用程序运行时。上述异常被发布到应用程序日志中。其他日志包含相关的异常,该异常表明重复的bean创建失败,修复是删除重复的代码。