Spring 对bean使用@Component会引发错误。NoSuchBeanDefinitionException
我试图创建一个简单的spring应用程序,但是当我使用@Component注释来表示bean而不是在spring.xml文件中定义它时,我遇到了这个错误 2017年8月9日上午11:06:03 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh 信息:刷新org.springframework.context.support。ClassPathXmlApplicationContext@7e32c033:启动日期[Wed Aug 09 11:06:03 IST 2017];上下文层次结构的根 2017年8月9日上午11:06:03 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 信息:从类路径资源[spring.XML]加载XMLbean定义 线程“main”org.springframework.beans.factory.NoSuchBeanDefinitionException中出现异常:没有名为“oval”的bean可用 位于org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:687) 位于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(AbstractBeanFactory.java:197) 位于org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1078) 位于org.sumit.javabrains.DrawingApp.main(DrawingApp.java:24) 我的课程如下: 1.DrawingApp.java(主类) 二,。Spring.xmlSpring 对bean使用@Component会引发错误。NoSuchBeanDefinitionException,spring,Spring,我试图创建一个简单的spring应用程序,但是当我使用@Component注释来表示bean而不是在spring.xml文件中定义它时,我遇到了这个错误 2017年8月9日上午11:06:03 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh 信息:刷新org.springframework.context.support。ClassPathXmlApplicationContext
<?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>
4.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()+")");
}
}
有没有人能帮助解决这个问题。我使用的是spring 4.3.10版本,这是因为您的组件扫描扫描了错误的包
-错误
应按如下方式进行扫描:
-更正您必须在spring.xml中定义所有bean。在这个场景中,您错过了spring配置文件中的Oval类。在spring.xml文件中将Oval类定义为bean。
或
编辑组件扫描标签并放入正确的软件包 这里出了两件事。
1.您在xml文件中提到了错误的基本包
com.sumit.javabrains必须替换为org.sumit.javabrains
尝试使用
@ComponentScan
而不是@Component
在Oval
类的顶部。我没有使用spring.xml文件(只是默认的spring引导配置),我的@SpringBootApplication注释类比@Component类深一个包级别,这使得@Component类没有被提取
例如:
@阿尔贝托:如果这对你有效,你能接受这个答案吗?因为修正了一个打字错误?如果这是一个有效的答案,那么是的。
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;
}
}
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()+")");
}
}
com.company.base/ComponentAnnotatedClass.java
com.company.base.application/MySpringBootApplication.java