Может ли один модуль прочитать бин другого модуля? - PullRequest
1 голос
/ 07 мая 2019

У меня есть два модуля SpringBoot.commons и web.

В модуле commons я определяю боб: enter image description here

И я могу получить этот боб В commons test enter image description here

Но, к сожалению, я не могу получить компонент от модуля пыльника.enter image description here

Я что-то ошибаюсь?Я хочу получить bean-компонент, определенный в модуле commons, из моего web модуля.

Это мой ModulesApplication.java

package com.github.fish56.modules;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ModulesApplication {
    public static void main(String[] args) {
        SpringApplication.run(ModulesApplication.class, args);
    }
}

ModulesApplicatonTest.java

package com.github.fish56.modules;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.test.context.junit4.SpringRunner;

import static org.junit.Assert.*;

@RunWith(SpringRunner.class)
@SpringBootApplication
public class ModulesApplicationTest {
    @Test
    public void isEnvOk(){}
}

Обновление: работает

Ответы [ 3 ]

0 голосов
/ 07 мая 2019

Использование SpringBootTest аннотация:

@SpringBootTest(
  classes = {CommonsApplication.class, ModulesApplication.class})
@RunWith(SpringRunner.class)
public class ModulesApplicationTest {
    @Autowired
    private YmlConfig ymlConfig;

    @Test
    public void isEnvOk(){}
}

Кроме того, ваш YmlConfigTest должен расширять ModulesApplicationTest класс.

0 голосов
/ 07 мая 2019

Для сканирования @Configuration bean-компонента вам необходимо указать базовые пакеты для @SpringBootApplication, затем добавить следующую строку, и она будет работать.

@SpringBootApplication(scanBasePackages = {"com.github.fish56.modules.commons.config", 
                                           "com.github.fish56.modules"})
0 голосов
/ 07 мая 2019

У вас не будет доступа к bean-компонентам, определенным в одном приложении Spring из другого. Это связано с тем, что каждое приложение Spring управляет своими bean-компонентами отдельно и имеет независимый ApplicationContext (интерфейс, который вы используете для получения bean-компонентов в вашем приложении).

...