Я пытаюсь избежать сканирования компонентов, чтобы сократить время запуска в наших модульных тестах и в нашем веб-приложении в целом.Как запустить веб-приложение Spring Boot без использования ComponentScan
Когда я заменяю @SpringBootApplication
с @SpringBootConfiguration @EnableAutoConfiguration
, я получаю следующее сообщение об ошибке:
Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean
Могу ли я вручную импортировать EmbeddedServletContainerFactory
каким-то образом?
Да, вы можете «реплицировать» конфигурацию внутри кода (аннотированная конфигурация), даже если код является сторонней библиотекой. Фактически, это полезно, когда вы должны переопределить конфигурацию по какой-либо причине. В моих тестах разница между использованием сканирования компонента или нет минимальна. Я бы избегал этого. – rdllopes
Взгляните на 'org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration'. Вот как Spring-Boot создает «EmbeddedServletContainerFactory». Я не могу сказать, почему у вас нет одного в вашем тесте без дополнительной информации (попробуйте выполнить отладку условий, если вы хотите знать, почему), но если вы хотите зарегистрировать свою собственную фабрику, просто скопируйте соответствующий 'EmbeddedServletContainerFactory 'bean configuration from' EmbeddedServletContainerAutoConfiguration'. – Pieter