Мы используем Spring (3.0.5) АОП с аннотациями @AspectJ
и <aop:aspectj-autoproxy/>
. Мы используем его для транзакций, аудита, профилирования и т. Д. Он отлично работает, за исключением того, что время запуска приложения постоянно растет по мере добавления большего количества кода.Spring AOP медленное время запуска
Я сделал некоторое профилирование и обнаружил, что большую часть времени тратится на инициализацию контейнера весны, а точнее org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(String, ObjectFactory)
- занимает около 35 секунд. org.springframework.aop.support.AopUtils.canApply(Pointcut, Class, boolean)
- занимает около 15 секунд.
Моя цель заключается в том, чтобы приложение начиналось через 5-10 секунд, а не ~ 45 секунд, как сейчас, поэтому любые советы были бы высоко оценены.
скакать к выводу, что Spring AOP вызывает трогания является поспешный вывод. (С учетом плетение происходит во время выполнения). Вы проверяли статистику JVM с помощью Jconsole или visualVm. У вас есть собственный метод init для некоторых из ваших компонентов. Вы пытались использовать ленивую инициализацию. (по свойству lazy-init в bean-компоненте)? –
Эти шаги я последую за ними. 1- Проверяйте статистику JVM при нормальной загрузке. 2. Сделайте свойство lazy-init beans по умолчанию, а затем снова проверьте статистику jvm (использование памяти и др.). 3- Если все еще нет заметного улучшения, я затем остановлю аспект автопроксимирования. Как я уже говорил, если бы мне пришлось сделать ставку, я буду готов поспорить, что это не AOP-соткание, влияющее на время загрузки. –
Я уверен, что это плетение, так как я потратил много времени на профилирование с помощью Yourkit, беря только потоки дампов во время запуска и размещения точек останова и всех точек плетения АОП. Но мне любопытно, когда вы говорите об отключении аспект аутопроверки, что альтернатива, которую вы предлагаете? Спасибо, Yuval –