我想创建一个简单的Spring应用程序,但是当我使用@Component注解bean而不是在spring.xml文件中定义它时,出现此错误。使用@Component进行bean抛出错误。 NoSuchBeanDefinitionException
2017年8月9日上午11时06分03秒org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh 信息:清爽org[email protected]7e32c033:启动日期[周三11年8月9日: 06:03 IST 2017];上下文层次结构的根 Aug 09,2017 11:06:03 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions INFO:从类路径资源[spring.xml]加载XML bean定义 线程“main”中的异常org.springframework.beans.factory.NoSuchBeanDefinitionException:没有名为'oval'的bean在org.springframework.beans.factory.support上提供 .AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1207) 在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284) 在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanF actory.java:197) 在org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1078) 在org.sumit.javabrains.DrawingApp.main(DrawingApp.java:24)
我的类是人如下: 1. DrawingApp.java(主类)
public package org.sumit.javabrains;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class DrawingApp {
public static void main(String[] args) throws InterruptedException {
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
Oval oval = (Oval) context.getBean("oval");
oval.draw();
}
}
2. 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"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<context:component-scan base-package="com.sumit.javabrains" />
<context:annotation-config />
<bean id="focus" class="org.sumit.javabrains.Point" scope="singleton">
<property name="x" value="-7" />
<property name="y" value="8" />
</bean>
</beans>
3 Point.java
package org.sumit.javabrains;
public class Point {
private int x;
private int y;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
4 Oval.java
package org.sumit.javabrains;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
@Component
public class Oval {
private Point focus;
public Point getFocus() {
return focus;
}
@Resource
public void setFocus(Point focus) {
this.focus = focus;
}
public void draw() {
System.out.println("Point focus is: ("+focus.getX()+", "+focus.getY()+")");
}
}
会有人能够帮助是什么原因导致这个问题。我使用的是春天4.3.10发布
感谢您指出错误。它工作 – Alberto
@Alberto如果这对你有用,你能接受答案吗? – yaswanth
用于修复输入错误? – BalusC