我的问题如下:假设您有一个Person类,该类具有2个实例Adam和Jacobs。因此,您还有另外两个班级叫做“学校”和“大学”。我的任务是通过注入Jacobs在学校学习而Adam也是大学生的定义来定义。
如何使用Spring Framework做到这一点? 代码写答案是受欢迎的:))
答案 0 :(得分:1)
我认为您要尝试的是在不同组件中注入相同类型的不同实例。您可以使用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();
}
}
大学班类似于学校班,但将限定词更改为“ adam”。
这是对您的要求的考验。
@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");
}
}