Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用innerBean时获取错误_Java_Spring - Fatal编程技术网

Java 使用innerBean时获取错误

Java 使用innerBean时获取错误,java,spring,Java,Spring,我正在编写一个简单的程序来测试内部bean,但遇到异常。这是我写的代码 文本编辑器类: public class TextEditor { private SpellChecker spellChecker; public SpellChecker getSpellChecker() { return spellChecker; } public void setSpellChecker(SpellChecker spellChecker) { this.spellChec

我正在编写一个简单的程序来测试内部bean,但遇到异常。这是我写的代码

文本编辑器类:

public class TextEditor {

private SpellChecker spellChecker;

public SpellChecker getSpellChecker() {
    return spellChecker;
}

public void setSpellChecker(SpellChecker spellChecker) {
    this.spellChecker = spellChecker;
}

public void spellCheck(){
    spellChecker.spellChecking();
}
}
拼写检查器类:

public class SpellChecker {

public SpellChecker() {
    System.out.println("Spell Checker Constructor");
}

public void spellChecking(){
    System.out.println("Spell Checking");
}
}
控制器类:

public class Controller {

public static void main(String[] args) {
    ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
    TextEditor editor = (TextEditor)context.getBean("editor");
    editor.spellCheck();
}
}
spring.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

 <bean id="editor" class="com.data.TextEditor">
    <property name="spellChecker">
        <bean id="spellChecker" name="com.data.SpellChecker"/>
    </property>
</bean>     

堆栈跟踪:

WARNING: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'editor' defined in class path resource [spring.xml]: Cannot create inner bean 'spellChecker' while setting bean property 'spellChecker'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'spellChecker' defined in class path resource [spring.xml]: Instantiation of bean failed; nested exception is java.lang.IllegalStateException: No bean class specified on bean definition
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'editor' defined in class path resource [spring.xml]: Cannot create inner bean 'spellChecker' while setting bean property 'spellChecker'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'spellChecker' defined in class path resource [spring.xml]: Instantiation of bean failed; nested exception is java.lang.IllegalStateException: No bean class specified on bean definition
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:313)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:122)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1481)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1226)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at com.controller.Controller.main(Controller.java:17)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'spellChecker' defined in class path resource [spring.xml]: Instantiation of bean failed; nested exception is java.lang.IllegalStateException: No bean class specified on bean definition
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1105)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1050)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:299)
... 15 more
Caused by: java.lang.IllegalStateException: No bean class specified on bean definition
at org.springframework.beans.factory.support.AbstractBeanDefinition.getBeanClass(AbstractBeanDefinition.java:356)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:66)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1098)
... 19 more
警告:在上下文初始化过程中遇到异常-取消刷新尝试:org.springframework.beans.factory.BeanCreationException:使用类路径资源[spring.xml]中定义的名称“editor”创建bean时出错:设置bean属性“spellChecker”时无法创建内部bean“spellChecker”;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建名为“spellChecker”的bean时出错,该bean在类路径资源[spring.xml]中定义:实例化失败;嵌套异常为java.lang.IllegalStateException:在bean定义上未指定任何bean类
线程“main”org.springframework.beans.factory.BeanCreationException中出现异常:创建名为“editor”的bean时出错,该名称在类路径资源[spring.xml]中定义:设置bean属性“spellChecker”时无法创建内部bean“spellChecker”;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建名为“spellChecker”的bean时出错,该bean在类路径资源[spring.xml]中定义:实例化失败;嵌套异常为java.lang.IllegalStateException:在bean定义上未指定任何bean类
位于org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:313)
在org.springframework.beans.factory.support.BeanDefinitionValueResolver.ResolveValueIfNeeded上(BeanDefinitionValueResolver.java:122)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1481)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1226)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
位于org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
位于org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
位于org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
位于org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
位于org.springframework.beans.factory.support.DefaultListableBeanFactory.PreInstanceSingleton(DefaultListableBeanFactory.java:772)
位于org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839)
位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)
位于org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:139)
位于org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:83)
位于com.controller.controller.main(controller.java:17)
原因:org.springframework.beans.factory.BeanCreationException:创建名为“spellChecker”的bean时出错,该bean在类路径资源[spring.xml]中定义:实例化失败;嵌套异常为java.lang.IllegalStateException:在bean定义上未指定任何bean类
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.InstanceBean(AbstractAutowireCapableBeanFactory.java:1105)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1050)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
位于org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:299)
... 还有15个
原因:java.lang.IllegalStateException:未在bean定义上指定bean类
位于org.springframework.beans.factory.support.AbstractBeanDefinition.getBeanClass(AbstractBeanDefinition.java:356)
位于org.springframework.beans.factory.support.SimpleInstallationStrategy.instantiate(SimpleInstallationStrategy.java:66)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.InstanceBean(AbstractAutowireCapableBeanFactory.java:1098)
... 还有19个
这就是我写的所有代码。有人能告诉我我在这里犯了什么错误吗。我将非常感激。


 <bean id="spellChecker" name="com.data.SpellChecker"/>

将属性名称更改为属性类


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

 <bean id="editor" class="com.data.TextEditor">
    <property name="spellChecker">
        <bean class="com.data.SpellChecker"/>
    </property>
</bean> 

将属性名称更改为属性类


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

 <bean id="editor" class="com.data.TextEditor">
    <property name="spellChecker">
        <bean class="com.data.SpellChecker"/>
    </property>
</bean> 

Bean定义缺少class属性。加上:

<bean id="spellChecker" name ="com.data.SpellChecker" class="com.data.SpellChecker"/>

Bean定义缺少class属性。加上:

<bean id="spellChecker" name ="com.data.SpellChecker" class="com.data.SpellChecker"/>

将属性名称更改为属性类

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

 <bean id="editor" class="com.data.TextEditor">
    <property name="spellChecker">
        <bean class="com.data.SpellChecker"/>
    </property>
</bean> 
这会解决你的问题

<!-- Definition for textEditor bean using inner bean -->
  <bean id="textEditor" class="com.tutorialspoint.TextEditor">
    <property name="spellChecker">
       <bean id="spellChecker" class="com.tutorialspoint.SpellChecker"/>
    </property>
  </bean>

将属性名称更改为属性类

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

 <bean id="editor" class="com.data.TextEditor">
    <property name="spellChecker">
        <bean class="com.data.SpellChecker"/>
    </property>
</bean> 
这会解决你的问题

<!-- Definition for textEditor bean using inner bean -->
  <bean id="textEditor" class="com.tutorialspoint.TextEditor">
    <property name="spellChecker">
       <bean id="spellChecker" class="com.tutorialspoint.SpellChecker"/>
    </property>
  </bean>