Ich habe eine Anwendung, die ziemlich groß wird, und die Spring-Startzeit beträgt etwa 20 Sekunden. Für die Produktion ist das in Ordnung, aber für die Entwicklung ist das ein großes Ärgernis.
Was ist ein gutes Profiling-Tool oder -Ansatz, das mir genau die Informationen geben kann, die ich brauche, um herauszufinden, was so lange dauert? Vielleicht ist es etwas, das ich optimieren kann?
Meine Anwendung ist eine ziemlich typische Spring/Hibernate-Webanwendung. Es gibt etwa 50 Datenbanktabellen und mehrere hundert Beans (so etwa 200-300... ich habe nicht gezählt). Es gibt ein paar @Configurable Beans. Viel Komponentenscan. Ich benutze auch Spring Security.
Ich habe ein paar primitive Profiling mit Log4j gemacht - nur mit der INFO-Einstellung. Hier sind einige Dinge, die ein wenig Zeit in Anspruch nehmen:
- INFO DefaultListableBeanFactory:555 - Pre-instantiating singletons - 2 Sekunden
- INFO SessionFactoryImpl:202 - Session-Factory erstellen - 2 Sekunden
- INFO HibernateTransactionManager:415 - Verwendung von DataSource [com.mchange.v2.c3p0.ComboPooledDataSource......] der Hibernate SessionFactory für HibernateTransactionManager - 7 Sekunden
Es gibt ein paar Dinge, die 0,5 bis vielleicht maximal 1 Sekunde dauern, aber diese 3 waren die größten.