Spring Framework default-lazy-init для всех компонентов - PullRequest
5 голосов
/ 26 мая 2011

Есть ли свойство spring для lazy-init всех бинов, которые загружает каркас пружины?

Я знаю об этих свойствах

 - lazy-init="true"
 - default-lazy-init="true"

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

Есть ли другой способ решить эту проблему с помощью конфигурации? или программно?

Ответы [ 4 ]

2 голосов
/ 26 мая 2011

Вы также можете использовать @Lazy аннотацию, но она такая же, как вы упоминали выше.

2 голосов
/ 26 мая 2011

Если не считать продления загрузчика бобов Spring, о котором я не знаю.

0 голосов
/ 22 июля 2013

Я реализовал это в своей компании, мне пришлось расширить некоторые классы жесткой пружины.Это было нелегко, но мы получали около 20 с при каждом запуске tomcat.К сожалению, для положений о конфиденциальности я не могу показать код, но взгляните на классы ClassPathBeanDefinitionScanner, DefaultBeanDefinitionDocumentReader, ContextNamespaceHandler и ComponentScanBeanDefinitionParser.

0 голосов
/ 19 декабря 2012

Согласно Java-документу это должно работать (хотя выглядит не очень красиво)

if (context.getBeanFactory() instanceof DefaultListableBeanFactory)
    {
        ((DefaultListableBeanFactory) context.getBeanFactory()).setAllowEagerClassLoading(false);
    }
...