Загрузка контекста приложения из источника, отличного от первичной конфигурации, в тесте интеграции с весенней загрузкой - PullRequest
0 голосов
/ 27 марта 2019

У меня есть загрузочное приложение Spring, которое содержит 2 модуля: один имеет остальные контроллеры и второй пакетный модуль.

Существует класс загрузочного приложения Spring, как показано ниже для запуска служб в 1-м модуле:

package a.b.c

@SpringBootApplication
@ImportResource({"classpath:META-INF/rest-context.xml","classpath:META-INF/batch-Context.xml"})
@EnableScheduling
public class Application {


    public static void main(String[] args) {

    }

}

Пакетный модуль также имеет иерархию abc ... Итак, классы конфигурации в пакетном модуле также сканируются при запуске приложения с загрузочной пружиной.По сути, пакетный модуль также запускается при запуске приложения весенней загрузки.

Это приложение использует сервер конфигурации Spring Cloud для свойств среды.

Я пишу интеграционный тестовый пример (см. Пример конфигурации вконец) для первого модуля и сталкивается со следующими проблемами:

  1. Свойства, указанные в batch-Context.xml, не разрешаются с сервера конфигурации Spring Cloud.
  2. Для устранения проблемыв пт.1, я добавил test.properties, чтобы из него можно было определить свойства.Однако та же проблема все еще сохраняется.
  3. Теперь я подумываю о том, как избежать запуска пакетного модуля (загрузка batch-Context.xml и сканирование конфигураций в пакетном модуле).Сканирование конфигураций может быть предотвращено путем рефакторинга имени пакета.Чтобы избежать загрузки batch-Context.xml, я думаю, что мне нужно будет создать новый класс конфигурации, в который можно импортировать batch-Context.xml, и этот класс должен быть каким-то образом исключен в тестовом примере.Однако я не уверен, как исключить новый класс конфигурации в тестовом примере.

У меня есть следующие вопросы:

  • Есть ли способ, которым @SpringBootTest загружает приложениеконтекст из другого класса конфигурации весенней загрузки, скажем Application1 (я могу удалить импорт batch-Context.xml здесь) вместо Application?
  • Если я разделю импорт batch-Context.xml в отдельном классе конфигурации, токак я могу исключить его в тестовом примере?
  • Любые другие решения этой проблемы?

Пример конфигурации интеграционного тестового набора:

@TestPropertySource(locations = "classpath:application-test.properties")
@RunWith(SpringRunner.class)
@ActiveProfiles("profile0")
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, properties = {"spring.cloud.config.enabled=false"})
public class ControllerIT {...
}

Любые указатели будут полезны

...