У меня есть приложение, которое становится довольно большим, и время запуска Spring составляет около 20 секунд.Для производственного использования это хорошо, но для разработки это большая боль.
Что такое хороший инструмент профилирования или подход, который может дать мне именно ту информацию, которая мне нужна, чтобы выяснить, что занимает так много времени?Может быть, это то, что я могу оптимизировать?
Мое приложение - довольно типичное весеннее / спящее веб-приложение.Там около 50 таблиц базы данных и несколько сотен бинов (например, 200-300 ... Я не считал).Там есть несколько @Configurable bean.Много компонентного сканирования.Я также использую Spring Security.
Я сделал примитивное профилирование с log4j - просто в настройке INFO.Вот некоторые вещи, которые занимают немного времени:
- INFO DefaultListableBeanFactory: 555 - Предварительные экземпляры синглетонов - 2 секунды
- INFO SessionFactoryImpl: 202 - создание фабрики сеансов - 2 секунды
- INFO HibernateTransactionManager: 415 - Использование источника данных [com.mchange.v2.c3p0.ComboPooledDataSource ......] Hibernate SessionFactory для HibernateTransactionManager - 7 секунд
Есть несколько вещей, которые занимают от 0,5 до 1 секунды вбольшинство, но эти 3 были самыми большими.