Обновление
Примечание : Я не знаю, понимаю ли я, что вы хотели бы сделать, но это мое решение ...
ClassA на самом деле не является классом, но интерфейс
public interface ClassA {
public String getInstanceName();
public void setInstanceName(String instanceName);
}
ClassB является реализацией интерфейса "ClassA"
public class ClassB implements ClassA {
private String instanceName;
public ClassB(String instanceName) {
super();
this.instanceName = instanceName;
}
@Override
public String getInstanceName() {
return instanceName;
}
@Override
public void setInstanceName(String instanceName) {
this.instanceName = instanceName;
}
}
Класс конфигурации TestConfig
@Configuration
class TestConfig {
@Bean(name = "instance1")
public ClassB instance1() {
return new ClassB("instance1");
}
@Bean(name = "instance2")
public ClassB instance2() {
return new ClassB("instance2");
}
}
И тестовый класс
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
@Autowired
@Qualifier("instance1")
ClassA objB1;
@Autowired
@Qualifier("instance2")
ClassA objB2;
@Test
public void test() {
System.out.println(objB1.getInstanceName());
System.out.println(objB2.getInstanceName());
}
}
Если это не то, что вы ищете, возможно, кому-то поможет.Об аннотации @Autowired
документ говорит следующее
Помечает конструктор, поле, метод сеттера или метод конфигурации как автоматически подключаемые средствами Spring для внедрения зависимостей.
, ноне класс ... Документация: https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/factory/annotation/Autowired.html