Как запустить веб-приложение 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 настраивает для вас, и решить, хотите ли вы вместо этого предоставить свои собственные конфигурации - вы можете просто имитировать классы автоконфигурации, и все должно работать одинаково.