Ich möchte eine Feder AOP-Funktion, wo wir einen Punkt Schnitt/innerhalb während der Frühjahr Bean-Initialisierung setzen können, um einige Statistiken wie erforderlich für die Wirtschaft zu berechnen. Ich würde gerne wissen, ob es mit Feder AOP-Modul möglich ist?Können wir Spring Bean Initialisierungszeit berechnen
0
A
Antwort
2
Sie können Initialisierungszeit mit dieser Komponente messen:
@Component
public class MyBeanPostProcessor implements BeanPostProcessor, Ordered {
private Map<String, Long> start;
private Map<String, Long> end;
public MyBeanPostProcessor() {
start = new HashMap<>();
end = new HashMap<>();
}
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
start.put(beanName, System.currentTimeMillis());
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
end.put(beanName, System.currentTimeMillis());
return bean;
}
@Override
public int getOrder() {
return Integer.MAX_VALUE;
}
//this method returns initialization time of the bean.
public long initializationTime(String beanName) {
return end.get(beanName) - start.get(beanName);
}
}
Aber diesmal nicht enthalten Zeit Konstruktor ausgeführt wird.
Sie können jedoch einen Moment nach dem Lesen der Bean-Definition aufzeichnen, bevor alle Bean-Konstruktoren ausgeführt werden. Verwenden Sie BeanFactoryPostProccessor für sie:
@Component
public class MyBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
private long launchTime;
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {
launchTime = System.currentTimeMillis();
}
public long getLaunchTime() {
return launchTime;
}
}
Der lauchTime ein Moment ist, wenn die Feder gerade die Konfiguration zu lesen (zum Beispiel XML-Datei) und bereit Bohnen zu erstellen.
So kann die volle Initialisierungszeit berechnet werden, verwenden Sie diese beiden Komponenten wie: max (end) - launchTime. (Der Unterschied zwischen der Zeit, in der die letzte Bean initialisiert und die Bean-Konfiguration gelesen wurde)
Verwandte Themen
- 1. Können wir einen Pool von Spring ScheduledExecutorTask erstellen?
- 2. Spring: - Wie können wir Bean bekommen, wenn der Kontext von web.xml geladen wird?
- 3. Spring Bean Zerstörungsmethode
- 4. Optional Spring-Bean Referenzen
- 5. Wie reduziert man die Initialisierungszeit für den Spring-WebApplicationContext?
- 6. Spring 3.1 Bean Sichtbarkeit mit Bean Definitionsprofile
- 7. Wie können wir die LETZTE Seite mit JPA berechnen?
- 8. Wofür wird der Prototyp Spring Bean verwendet?
- 9. Spring: @Component versus @Bean
- 10. Spring ApplicationContext-Bean-Bereich
- 11. Spring 3 Bean-Instanziierungssequenz
- 12. Spring Bean Eigenschaften persistent
- 13. Spring Bean Scopes
- 14. Spring Framework Bean Fehler
- 15. Session aware spring bean
- 16. Spring request Bean
- 17. Reihenfolge der Spring Bean Initialisierung
- 18. Spring Anfrage Scoped Bean Population
- 19. Wie Spring Bean in Thread
- 20. Spring Bean Injektion - inject Eigenschaften nach Bean wurde definiert
- 21. Wie können wir die DataIntegrityViolationException in Spring Hibernate lösen?
- 22. Können wir mithilfe von Spring Boot eine Java-Bibliothek implementieren?
- 23. Spring-Sicherheit und JSF: Aufruf-Methode beim Bean-Backing Bean?
- 24. Spring statische Initialisierung einer Bean
- 25. Hibernate SessionFactory-Bean ohne Spring
- 26. Java Spring Recreate spezifische Bean
- 27. Wie funktioniert Spring Bean Parallelität
- 28. Spring Bean mit Laufzeitkonstruktor Argumenten
- 29. Wohin mit @Bean Spring Boot?
- 30. Spring Bean Umfang. Singleton und Prototyp
Möchten Sie den Zeitraum berechnen, in dem die Spring Bean die Initialisierungszeit oder die Ausführungszeit Ihrer Geschäftslogik erhält? –
Hallo .. ich möchte Frühjahr Bean berechnen Initialisierung Zeit zu berechnen.Mit dieser Zeit müssen wir einige Business-Kriterien berechnen –
Nur neugierig, welche Art von Business-Kriterien hängt von Federinitialisierungszeit ?. Gibt es eine Logik bei der init-Methode, die mehr Zeit in Anspruch nimmt und Sie diese aufzeichnen müssen? –