如何使用 Spring 框架将相同 class 的 2 个实例注入另外 2 个不同的 classes?
How to inject 2 instances of the same class to another 2 different classes using Spring Framework?
我的问题如下:假设您有一个 class 人,其中有 2 个实例 Adam 和 Jacobs。因此,您还有另外 2 个 classes,分别称为 School 和 University。我的任务是通过注入来定义 Jacobs 在学校读书,而 Adam 也是一名大学生。
如何使用 Spring 框架来实现?
欢迎编写代码答案:))
我想你想做的是在不同的组件中注入相同类型的不同实例。您可以使用 spring @Qualifiers 来做到这一点。我草拟了您分享的问题的解决方案。
拥有class.
这个人
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");
}
}
学校class.
@Component
public class School {
private Person jacobs;
public School(@Qualifier("jacobs") Person jacobs) {
this.jacobs = jacobs;
}
public String personName() {
return jacobs.getName();
}
}
大学 class 与学校 class 相似,但将限定词名称更改为 "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");
}
}
我的问题如下:假设您有一个 class 人,其中有 2 个实例 Adam 和 Jacobs。因此,您还有另外 2 个 classes,分别称为 School 和 University。我的任务是通过注入来定义 Jacobs 在学校读书,而 Adam 也是一名大学生。
如何使用 Spring 框架来实现? 欢迎编写代码答案:))
我想你想做的是在不同的组件中注入相同类型的不同实例。您可以使用 spring @Qualifiers 来做到这一点。我草拟了您分享的问题的解决方案。
拥有class.
这个人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");
}
}
学校class.
@Component
public class School {
private Person jacobs;
public School(@Qualifier("jacobs") Person jacobs) {
this.jacobs = jacobs;
}
public String personName() {
return jacobs.getName();
}
}
大学 class 与学校 class 相似,但将限定词名称更改为 "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");
}
}