我正在尝试将一个新的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。
答案 0 :(得分:0)
这里的问题是,由于一些重构,我的spring配置中的两个不同点创建了bean,修复程序是删除重复的代码。我有相同的bean创建代码:
@Bean(name = MY_BEAN_NAME)
public MyUtilBeanClass getMyBeanClass() {
return new MyUtilBeanClass();
}
...在另一个课程中,我有一半重构。 在这种情况下,我的错误是我没有grep所有生成的日志文件。异常被拆分,然后被分成2个不同的日志,一个用于服务器启动,另一个用于应用程序运行时。上述异常被发布到应用程序日志中。其他日志包含相关的异常,该异常表明重复的bean创建失败,修复是删除重复的代码。