У меня есть загрузочное приложение 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 для свойств среды.
Я пишу интеграционный тестовый пример (см. Пример конфигурации вконец) для первого модуля и сталкивается со следующими проблемами:
- Свойства, указанные в batch-Context.xml, не разрешаются с сервера конфигурации Spring Cloud.
- Для устранения проблемыв пт.1, я добавил test.properties, чтобы из него можно было определить свойства.Однако та же проблема все еще сохраняется.
- Теперь я подумываю о том, как избежать запуска пакетного модуля (загрузка 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 {...
}
Любые указатели будут полезны