У меня есть сценарий настройка Spring Безопасность встроенного Jetty, который, похоже, несколько решен, если я использую JavaConfig для настройки сервера Jetty.
В результате, это похоже на JavaConfig, а не на XML, может быть лучшим вариантом для больших фрагментов проекта. Однако в пространствах имен XML есть некоторые тонкости, такие как <context:component-scan />
, которые не доступны в настройках @Configuration
.
Я обнаружил, что ApplicationContextAware
соблюдается для классов @Configuration
, поэтому возможно следующее:
@Configuration
public class FooConfig implements ApplicationContextAware {
@Override
public void setApplicationContext(ApplicationContext applicationContext) {
((AnnotationConfigApplicationContext) applicationContext).scan("org.example");
}
}
Альтернативой documented является то, что класс @Configuration
использует аннотацию @ImportResource
и вытягивает существующий XML файл:
@Configuration
@ImportResource("applicationContext-withComponentScan.xml")
public class BarConfig {}
Я предполагаю, что вопрос: "Является ли плохая форма злоупотреблять ApplicationContextAware
таким образом, или это действительно не злоупотребление"? Что-то просто странно грязно относится к подходу, поэтому я не удивлюсь, если ребята из Spring так или иначе накрыли это, что я не заметил.
Для заинтересованного пользователя проблема связана с проверкой настройки Джерси с классами @Resource
и @Provider
, которые мне бы не нужно было вручную управлять записями в конфигурации класса/XML.