未在bean定义上指定bean类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了未在bean定义上指定bean类相关的知识,希望对你有一定的参考价值。
[抱歉,这个问题太含糊和笼统。我正在尝试使用大量的弹簧接线来启动一个庞大的旧项目,并且出现此错误:
奇怪的是,此错误不会告诉我发生在哪个xml,哪个bean id上。
我当然不希望有人指出我要修复的地方。.[[我的问题是,弹簧专家甚至如何调试这种无意义的错误消息?
是的,我知道这一定是我的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);
public Class<?> getBeanClass() throws IllegalStateException
Object beanClassObject = this.beanClass;
if (beanClassObject == null)
throw new IllegalStateException("No bean class specified on bean definition");
if (!(beanClassObject instanceof Class))
throw new IllegalStateException(
"Bean class name [" + beanClassObject + "] has not been resolved into an actual Class");
return (Class) beanClassObject;
我的问题是,春季专家甚至如何调试这种错误的错误消息?
我认为错误消息非常有用。它指出某些事情试图将您的应用程序置于非法状态。在此特定示例中,以未指定某些bean类的方式配置了上下文。这通常是由于忘记将class
属性放在<bean>
声明中引起的。
Spring为您的上下文中的每个bean创建BeanDefinition
对象。这些可以来自您的<bean>
声明或其他XML元素或Java配置元素(来自@Configuration
,@Component
等)。 Spring ApplicationContext
中涉及的几乎所有东西都是bean。
您可以肯定地说,Spring的基础设施bean不应为此负责。 Spring是一个已建立的框架,其中包含大量工作并在每次发布之前进行测试。显而易见的替代方案是您在代码中的某个地方忘记指定了class
。例如,您是否尝试制作abstract
<bean>
但忘记添加abstract="true"
?您是否注册了BeanDefinitionParser
并创建了没有BeanDefinition
的class
?您是否创建了BeanDefinitionPostProcessor
并删除了BeanDefinition
class
值?
这些就是我要开始的事情。
以上是关于未在bean定义上指定bean类的主要内容,如果未能解决你的问题,请参考以下文章
JSF 2 selectOneRadio未在Bean中设置值[重复]
spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段