Я пытаюсь внедрить конструктор, используя @ Autowired и @ Qualifier весной 5.
public class A {
private int a;
public void setA(int a) {
this.a = a;
}
@Override
public String toString() {
return "A [a=" + a + "]";
}
}
Класс Hello
public class Hello {
private A aobj;
@Autowired
public Hello(@Qualifier("a01") A aobj) {
this.aobj = aobj;
}
public void show() {
System.out.println("aobj : " + aobj);
}
}
Класс конфигурации
@Configuration
public class JavaConfig {
@Bean(name = "a02")
public A createA1() {
A ob = new A();
ob.setA(199);
return ob;
}
@Bean
public Hello hello(A aobj) {
return new Hello(aobj);
}
}
Основной класс
public static void main(String[] args) {
ApplicationContext ctx = new AnnotationConfigApplicationContext(JavaConfig.class);
System.out.println("--------Spring Container is ready----------");
Hello hello = (Hello)ctx.getBean("hello");
hello.show();
}
Выход:
--------Spring Container is ready----------
aobj : A [a=199]
Намеренно я даю неправильное значение ( a02 ) для имени компонента в классе конфигурации, которое не совпадает со значением @Qualifier ( a01 ) в Hello Класс.
В результате того, что я наблюдаю, компонент A успешно внедряется в Hello Bean.
В идеале это должно произойти из-за ошибки, поскольку в контейнере нет ожидаемого совпадающего компонента с именем * 1036. * a01 найдено, в противном случае какой смысл использовать @Qualifier в этом случае.
Может ли кто-нибудь осветить это. Спасибо !!