В частности, я хотел бы иметь возможность разделять классы конфигурации, создавая их и включающие в себя. Где вы обычно делаете это:Как я могу программно настроить аннотации @Configuration Spring?
@Configuration
@Import({SharedConfiguration.class})
public class MyAppContext extends WebMvcConfigurerAdapter {
//stuff
}
@Configuration
@ComponentScan("com.example")
public class SharedConfiguration {
//stuff
}
Я хотел бы сделать это:
@Configuration
public class MyAppContext extends WebMvcConfigurerAdapter {
public SharedConfiguration sharedConfig(){
return new SharedConfiguration("com.example");
}
//stuff
}
@Configuration
public class SharedConfiguration {
public SharedConfiguration(String package){
//tell Spring to scan package
}
}
Причина этого заключается в том, что мне нужно, чтобы быть в состоянии сказать, общий компонент делает сканирование, какой пакет посмотри на. Он будет отличаться в зависимости от того, какой проект он используется в
EDIT:.
Чтобы обеспечить некоторый дополнительный контекст, я пытаюсь сделать конфигурацию общего использования для создания Hibernate и EHCache, используя нашу внешнюю конфигурацию который может использовать несколько проектов. Я, конечно, открыт для других методов, но это казалось мне самым логичным путем. Я уверен, что есть что-то ~ весной, что я могу поиграть, чтобы сказать: «Вот! Сканируй этот путь, когда Весна тебя инициализирует!» вместо жесткого кодирования в аннотацию.
Звучит как проблема XY; более подробная информация была бы полезна. В частности, какова цель сканирования различных пакетов при разных обстоятельствах? Это звучит как случай для профилей, условных выражений и/или автоконфигурации. – chrylis
@chrylis Обновлен вопрос, чтобы сделать его более понятным. Конечно, это может быть проблема XY, я пытаюсь сделать что-то программным способом, и Spring явно не очень программный. – monitorjbl
Вам точно нужна автоконфигурация. В основном он использует SPI для поиска классов '@ Configuration', а затем импортирует их в контекст. – chrylis