如何使用 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");
    }
}