Как использовать весенние аннотации MVC для создания файла конфигурации xml? - PullRequest
2 голосов
/ 14 ноября 2011

Поскольку Google App Engine будет регулярно запускать и останавливать экземпляры, а это означает, что время холодного запуска будет регулярно выполняться, я бы хотел настроить приложение Spring MVC3 с использованием XML, чтобы избежать задержки 3-5 секунд, вызванной сканированием файлов классов.для аннотаций при использовании конфигурации аннотаций, когда запускается новый экземпляр.

Однако написание xml - это немного хлопотно, и гораздо проще использовать аннотации для определения моей конфигурации.Поэтому я хотел бы использовать лучшее из обоих миров и использовать аннотации для создания файла конфигурации, а затем отключить сканирование во время выполнения.Из этого вопроса кажется, что не существует каких-либо инструментов, которые бы это делали.

Так, как лучше всего подойти к этому?Предположительно, существует класс, который выполняет сканирование весной во время выполнения, который можно было бы переназначить для сканирования во время разработки, а затем выпустить xml?

Существуют ли какие-либо ограничения на действия, которые можно выполнить из аннотацииконфигурация, которая не будет возможна в конфигурации xml?

1 Ответ

1 голос
/ 14 ноября 2011

Я бы сделал это, используя Spring для сканирования пакета, содержащего аннотированные классы, затем используя отражение для получения аннотаций к классу и его методам и написания XML для них соответственно.Весеннее сканирование - ClassPathScanningCandidateComponentProvider.Вот фрагмент кода того, как его можно использовать:

ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false);
scanner.addIncludeFilter(new AnnotationTypeFilter(Component.class)); 
for(String packageToScan : packagesToScan) {
    for (BeanDefinition bd : scanner.findCandidateComponents(packageToScan)) {
        Class clazz = Class.forName(bd.getBeanClassName());
        // Use reflection on clazz to write the XML file
    }
}

Надеюсь, это поможет!

...