首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Spring框架将同一个类的两个实例注入另两个不同的类?

如何使用Spring框架将同一个类的两个实例注入另两个不同的类?
EN

Stack Overflow用户
提问于 2018-11-01 13:39:37
回答 1查看 706关注 0票数 0

我的问题如下:假设您有一个类人,其中有2个实例Adam和Jacobs。所以,你有另外两个班级,叫做学校和大学。我的任务是通过注入雅各布斯在学校学习的定义,亚当也是一名大学生。

如何使用Spring框架实现它?(欢迎以书面方式回答:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-01 15:40:44

我认为您要做的是在不同的组件中注入相同类型的不同实例。您可以通过使用spring @限定符来做到这一点。我为你分享的问题勾勒出了一个解决方案。

上了人课。

代码语言:javascript
复制
public class Person
{
    private String name;

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

以及每个人的配置。

代码语言:javascript
复制
@Configuration
public class DemoConfig {

    @Bean
    public Person adam() {
        return new Person("Adam");
    }

    @Bean
    public Person jacobs() {
        return new Person("Jacobs");
    }
}

学校的班级。

代码语言:javascript
复制
@Component
public class School {

    private Person jacobs;

    public School(@Qualifier("jacobs") Person jacobs) {
        this.jacobs = jacobs;
    }

    public String personName() {
        return jacobs.getName();
    }
}

大学班级与学校班级相似,但将限定词名改为"adam“。

下面是对您的需求的测试。

代码语言:javascript
复制
@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");
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53102476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档