@qualifier不使用@Component

时间:2016-04-06 16:43:57

标签: java spring

大家好我正在使用基于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),它可以正常工作。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

@Qualifier没有设置bean的名称,只是添加了额外的元数据。但是,getBean(String)期望bean名称作为其参数。您没有名为hello的bean。

可以使用

设置bean的名称
@Component("hello")

在这种情况下,@Qualifier变得毫无用处。