Utilizziamo Spring A (3.0.5) AOP con annotazioni in stile @AspectJ
e <aop:aspectj-autoproxy/>
. Lo usiamo per transazioni, auditing, profiling, ecc. Funziona benissimo eccetto il fatto che il tempo di avvio dell'applicazione è in continua crescita man mano che viene aggiunto più codice.Spring AOP tempo di avvio lento
Ho effettuato alcuni profili e ho scoperto che la maggior parte del tempo viene spesa durante l'inizializzazione del contenitore Spring, in particolare org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(String, ObjectFactory)
- circa 35 secondi. org.springframework.aop.support.AopUtils.canApply(Pointcut, Class, boolean)
- dura circa 15 sec.
Il mio obiettivo è che l'applicazione inizi tra 5 e 10 secondi e non ~ 45 secondi come ora, quindi qualsiasi suggerimento sarebbe molto apprezzato.
Jumping a concludere che la primavera AOP provoca prestazioni di avvio è la conclusione affrettata. (Considerando la tessitura avviene in fase di esecuzione). Hai controllato le statistiche di JVM usando Jconsole o visualVm. Disponi di un metodo init personalizzato per alcuni dei tuoi bean. Hai provato a utilizzare l'inizializzazione pigra. (dalla proprietà lazy-init in bean)? –
Questi sono i passi che seguirò. 1- Controlla le statistiche JVM durante il caricamento normale. 2. Rendere le proprietà di lazy-init dei bean come predefinite e quindi controllare di nuovo la stat jvm (uso della memoria e altri). 3- Se ancora non ci sono miglioramenti notevoli, allora spegnerò l'autoproduzione degli aspetti. Come ho detto, se dovessi piazzare una scommessa, sarò pronto a scommettere che la sua tessitura non AOP influisce sul tempo di caricamento. –
Sono abbastanza sicuro che sia la tessitura da quando ho passato un sacco di tempo a profilare con Yourkit, prendendo solo discariche durante l'avvio e posizionando alcuni punti di interruzione e tutti i punti per la tessitura AOP. Ma io sono curioso quando dici che l'aspetto di chiusura è autoproxying qual è l'alternativa che suggerisci? Grazie, Yuval –