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)
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? –