java – bean定义上没有指定bean类

对不起,这可能太模糊了,而且还有一个问题.我正在尝试用大量的弹簧布线来创建一个巨大的遗留项目,我收到了这个错误:

bizzare的事情是这个错误没告诉我哪个xml,哪个bean id,发生错误.

我当然不希望有人指出我在哪里修复..我的问题是,Spring专家如何调试这种无法提供信息的错误消息?

是的,我明白它必须是我的一个错误设置的xml bean.但是不应该错误消息让我更容易找出哪个bean?

任何建议都将非常感激.

00:09:00.640 [main] ERROR com.xxxx.yyyy.zzzzzz.AppMain - Failed to initialize BLAH BLAH BLAH
java.lang.IllegalStateException: No bean class specified on bean definition
        at org.springframework.beans.factory.support.AbstractBeanDefinition.getBeanClass(AbstractBeanDefinition.java:381) ~[spring-beans-3.1.2.RELEASE.jar:3.1.2.RELEASE]
        at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:154) ~[spring-beans-3.1.2.RELEASE.jar:3.1.2.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1035) ~[spring-beans-3.1.2.RELEASE.jar:3.1.2.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:939) ~[spring-beans-3.1.2.RELEASE.jar:3.1.2.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485) ~[spring-beans-3.1.2.RELEASE.jar:3.1.2.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) ~[spring-beans-3.1.2.RELEASE.jar:3.1.2.RELEASE]

它是通过以下代码抛出的. init()方法接受spring xml文件并进行连接.

try {
    AppMain.init(args_);
} catch (Exception e) {
    _LOGGER.error("Failed to initialize BLAH BLAH BLAH", e);
    System.exit(-1);
}
最佳答案

My question is, how do spring experts even debug this kind of
uninformative error message?

我认为错误信息非常有用.它声明某些东西试图将您的应用程序置于非法状态.在此特定示例中,您的上下文是以未指定某个bean类的方式配置的.这通常是由于忘记将一个类属性放在< bean>中而引起的.宣言.

Spring为您上下文中的每个bean创建BeanDefinition对象.这些可以来自您的< bean>声明或其他XML元素或Java配置元素(来自@Configuration,@ Component等). Spring ApplicationContext中涉及的几乎所有内容都是bean.

您可以非常肯定Spring的基础架构bean不应该为此负责. Spring是一个已建立的框架,其中包含大量工作并在每次发布之前完成测试.显而易见的替代方案是,在代码中的某处,您忘记指定一个类.例如,您是否尝试制作一个抽象的< bean>但忘了添加abstract =“true”?您是否注册了BeanDefinitionParser并在没有类的情况下创建BeanDefinitions?您是否创建了BeanDefinitionPostProcessor并删除了BeanDefinition类值?

这些是我要开始的事情.

转载注明原文:java – bean定义上没有指定bean类 - 代码日志