Spring @Configuration и

У меня есть сценарий настройки 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 вручную.

14
задан Community 23 May 2017 в 12:13
поделиться