大家好我正在使用基于Java的配置&我有2个这样的课程:
HelloWorld.Java
@Component
@Qualifier("hello")
public class HelloWorld {
public void helloWorld() {
System.out.println("hello world");
}
}
Main.java
public class Main {
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("file:application-config.xml");
HelloWorld hw = (HelloWorld) context.getBean("hello");
hw.helloWorld();
}
}
应用-config.xml中
<context:component-scan base-package="com.basepackage" />
这给了我以下错误:Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'hello' is defined
然而,如果我使用HelloWorld hw = context.getBean(HelloWorld.class)
,它可以正常工作。
我在这里缺少什么?
答案 0 :(得分:2)
@Qualifier
没有设置bean的名称,只是添加了额外的元数据。但是,getBean(String)
期望bean名称作为其参数。您没有名为hello
的bean。
可以使用
设置bean的名称@Component("hello")
在这种情况下,@Qualifier
变得毫无用处。