La investigación principal en este documento es el código de implementación del tiempo de ejecución del método de grabación de Spring Boot AOP, como sigue.
Para optimizar el rendimiento, es necesario contar primero el tiempo de ejecución de cada método. Es demasiado problemático para emitir directamente el registro antes y después del método. Puede usar AOP para agregar estadísticas de tiempo
<Spendency> <MoupRoMID> org.springframework.boot </groupid> <artifactId> spring-boot-starter-aop </artifactid> </pendency>
Spring.aop.auto = True
La propiedad Spring.aop.auto está habilitada de forma predeterminada, lo que significa que mientras se introduzca la dependencia de AOP, @enableSpectjaUtoProxy se ha agregado de forma predeterminada. ¡Recuerde no agregar información innecesaria, como @enableaspectjautoproxy!
@Componente@AspectPublic Class LogAspect {Private static final log log = logFactory.getLog (logAspect.class);/*** Defina un punto de entrada. * Explicación: * * ~ El primero * representa cualquier modificador y cualquier valor de retorno. * ~ El segundo * se define en un paquete web o subpackage * ~ El tercer * cualquier método * ~ .. coincida con cualquier número de parámetros. */@PointCut ("Ejecutivo (*com.wedo.stream.service ..*.*(..))") public void logPointCutcut () {}@org.aspectj.lang.annotation.around ("logPointCut ()") Public Object Doaround (procediendojo de unión unePoint) lanza Troyable {// log.deBug (" "/t"); long start = System.CurrentTimEmillis (); try {Object result = unkePoint.proceed (); long end = System.CurrentTimEmillis (); log.error ("++++++ Último"+unión de unión+"/TUSE TIME:"+(end - inicio)+"MS!"); return Result;} captura (e) {end largo = largo = System.CurrentTimEmillis (); log.error ("++++++ alrededor de"+unión de unión+"/tiempo de tusa:"+(end - inicio)+"MS con excepción:"+e.getMessage ()); Throw E;}}} Después del método AOP no puede devolver el valor correctamente
Este método de poder debe devolver un valor, de lo contrario, no habrá valor de retorno en el código.
// Esto es incorrecto público sin dookound (procedimientojoinpoint unkenpoint) {} La documentación de Spring dice esto: la parte Spring AOP utiliza JDK Dynamic Proxy o CGLIB para crear proxy para el objeto de destino. Si el objetivo proxy implementa al menos una interfaz, se utiliza un proxy dinámico JDK. Todas las interfaces implementadas por este tipo de objetivo serán proxyes. Si el objeto de destino no implementa ninguna interfaz, se crea un proxy CGLIB.
El valor predeterminado es el proxy dinámico JDK, cambiado a CGLIB
Lo anterior es todo el contenido de este artículo sobre el ejemplo de código de tiempo de ejecución del método de grabación de arranque de primavera AOP. Espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!