Я пытаюсь понять, сколько времени сканирование компонентов добавляет создание контекста приложения. В настоящее время создание контекста приложения занимает около 100 секунд, и я подозреваю, что сканирование компонентов для определения компонентов требует больших затрат. У меня есть ряд вопросов следующего содержания:
Как измерить общее время, затраченное на сканирование компонентов?
Влияет ли количество базовых записей context:component-scan на пространство поиска? Я предполагаю, что при сканировании компонентов используется PathMatchingResourcePatternResolver для сканирования каждой записи в пути к классам и последующего поиска классов, соответствующих регулярному выражению базового пакета. Более эффективно структурировать метаданные, например:
<context:component-scan base-package="foo" />
<context:component-scan base-package="bar" />
<context:component-scan base-package="baz" />
or
<context:component-scan base-package="foo, bar, baz" />
Я также предполагаю, что количество классов, в которых PathMatchingResourcePatternResolver влияет на сканирование компонентов, поскольку проверка соответствующих аннотаций компонентов требует проверки файла класса. Так является ли хорошей практикой хранить классы с аннотациями только в четко определенном пакете, чтобы уменьшить число проверяемых классов?
Перечислены ли где-нибудь известные передовые практики о том, какие соображения следует учитывать при проектировании, чтобы получить наиболее оптимальную производительность сканирования компонентов?