Я думаю, что вы пытаетесь внедрить разные экземпляры одного типа в разные компоненты. Вы можете сделать это с помощью Spring @Qualifiers. Я делаю набросок решения проблемы, которую вы разделили.
Наличие класса Person.
public class Person
{
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
И конфигурация для каждого человека.
@Configuration
public class DemoConfig {
@Bean
public Person adam() {
return new Person("Adam");
}
@Bean
public Person jacobs() {
return new Person("Jacobs");
}
}
Школьный класс.
@Component
public class School {
private Person jacobs;
public School(@Qualifier("jacobs") Person jacobs) {
this.jacobs = jacobs;
}
public String personName() {
return jacobs.getName();
}
}
Университетский класс аналогичен школьному классу, но имя квалификатора меняется на «Адам».
Вот тест для ваших требований.
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
@Autowired
private School school;
@Autowired
private University university;
@Test
public void testPersonDependencies() {
assertThat(school.personName()).isEqualTo("Jacobs");
assertThat(university.personName()).isEqualTo("Adam");
}
}