У меня есть приложение Spring MVC с несколькими отдельными модулями, все из которых имеют свой собственный класс JavaConfig @Configuration. Моя цель - загрузить все весенние конфигурации, которые присутствуют в войне. В зависимости от параметров, переданных команде сборки, некоторые модули и, следовательно, конфигурации могут отсутствовать, и поэтому @Import
не является вариантом, поскольку он будет бросать ClassDefNotFound
.
Весной документация гласит:
@Конфигурация мета-аннотируется с @Component, поэтому классы @Configuration являются кандидатами на сканирование компонентов (как правило, с использованием элемента Spring XML), и поэтому также могут использовать @Autowired/@Inject на уровне поля и метода (но не в конструкторе уровень).
Классы @Configuration могут не только загружаться с помощью сканирования компонентов, но также сами могут настраивать сканирование компонентов с помощью аннотации @ComponentScan:
Однако основная точка входа в класс приложения выглядит так:
@Configuration
@EnableWebMvc
@EnableAutoConfiguration
@ComponentScan(basePackages="com.svims.common.web.config")
public class Application extends WebMvcConfigurerAdapter {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
И есть еще один класс с @Configuration
аннотацией в com.svims.common.web.config
пакете, который не найден или бобы внутри этой конфигурации просто не загружены.
Я попытался добавить это в основной класс приложения
@ComponentScan(basePackages="com.svims.common.web.config",
includeFilters = {@ComponentScan.Filter( Configuration.class ) })
Чтобы убедиться, что сканирование настроено на поиск этих типов классов, но оно по-прежнему не работает.
Я могу только предположить, что Spring MVC загружается таким образом, чтобы игнорировать эти конфигурации, но я не могу найти ссылки на это в документации.
Кто-нибудь знает, что происходит, или какие-либо предложения о том, как я могу это сделать?
Всегда проверяйте проверенные пакеты снова и снова.
Configuration
класса, которая должна быть расположена при сканировании компонентов, присутствует в пути к классам? Если да, отладили ли вы, чтобы увидеть, действительно ли этот класс создается?