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