2016-04-06 3 views
1

Привет ребята Я использую конфигурации на основе Java & У меня есть 2 классов, как это:@qualifier не работает с @Component

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(); 
    } 
} 

application-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) работает нормально.

Что мне здесь не хватает?

ответ

2

@Qualifier не устанавливает имя компонента, он просто добавляет дополнительные метаданные к нему. Тем не менее, getBean(String) ожидает имя компонента в качестве аргумента. У вас нет фасоли по имени hello.

имя бина может быть установлен с

@Component("hello") 

в этом случае @Qualifier становится довольно бесполезным в этом сценарии.

Смежные вопросы