Как запустить веб-приложение Spring Boot без использования ComponentScan

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

Когда я заменяю @SpringBootApplication с @SpringBootConfiguration @EnableAutoConfigurationЯ получаю следующую ошибку:

Невозможно запустить EmbeddedWebApplicationContext из-за отсутствия компонента EmbeddedServletContainerFactory

Могу ли я вручную импортировать EmbeddedServletContainerFactory каким-то образом?

2 ответа

Решение

Милош и Питер предоставили средства, чтобы найти ответ. Минимальное веб-приложение Spring Boot может быть запущено с помощью следующего:

@SpringBootConfiguration
@Import({EmbeddedServletContainerAutoConfiguration.class})
public class Application extends SpringBootServletInitializer {
   ...
}

ServerPropertiesAutoConfiguration.class также может быть удобно подобрать такие вещи, как номер порта для приложения.

Я предлагаю сначала запустить ваше приложение с включенным флагом отладки и записать все активированные автоконфигурации. Затем отключите автоконфигурацию и импортируйте эти конфигурации с помощью @Import на вашем классе приложения.

Кроме того, вы можете посмотреть на каждый из этих классов конфигурации и посмотреть, что Spring Boot настраивает для вас, и решить, хотите ли вы вместо этого предоставить свои собственные конфигурации - вы можете просто имитировать классы автоконфигурации, и все должно работать одинаково.

Другие вопросы по тегам