Как внедрить 2 экземпляра одного и того же класса в другие 2 разных класса с помощью Spring Framework? - PullRequest
0 голосов
/ 01 ноября 2018

У меня следующий вопрос: предположим, что у вас есть класс Person, у которого есть 2 экземпляра Адам и Иаков. Итак, у вас есть еще 2 класса под названием Школа и Университет Моя задача - определить, введя, что Джейкобс учится в школе, а Адам тоже студент университета.

Как это сделать с помощью Spring Framework? Код письменного ответа приветствуется :))

1 Ответ

0 голосов
/ 01 ноября 2018

Я думаю, что вы пытаетесь внедрить разные экземпляры одного типа в разные компоненты. Вы можете сделать это с помощью 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");
    }
}
...