Red de conocimiento informático - Material del sitio web - Cómo aplicar anotaciones de aspecto AOP en spring3.1 MVC

Cómo aplicar anotaciones de aspecto AOP en spring3.1 MVC

Hay una función de monitoreo del tiempo de operación en el proyecto reciente

La anotación spring3.1 mvc -control se utiliza en el proyecto

Para monitorear el tiempo de ejecución de todas las operaciones, una AOP está escrito

Al configurar mvc aop, inicialmente se configura de acuerdo con la anotación de aspecto ordinaria, que no puede tener efecto.

Regrese y verifique la información relevante. Algunos dijeron que @control no es compatible con AOP, y otros dijeron que sí, pero finalmente encontré el método de configuración relevante

porque me gustan las anotaciones de aspecto. . estilo. Entonces solo proporciono configuración relacionada con el estilo de aspecto. Busque frascos relacionados en línea. Solo hablaré de la configuración real de la fachada mvc.

La premisa es que la configuración de MVC sea exitosa.

Escribir clase AOP

[java] ver copia simple

paquete com.wx.aop.timer

importar org.apache. log4j.aspectj.lang.ProceedingJoinPoint;

importar org.aspectj.lang.annotation.Around

importar org.aspectj.lang.annotation.Aspect; / p>

importar org.springframework.stereotype.Component;

@Componente

@Aspect

temporizador de clase pública {

private Logger logger = Logger.getLogger(getClass());

// Pruebe estas dos anotaciones

// @Around("execution(* org.springframework.web. servlet) .mvc.annotation .AnnotationMethodHandlerAdapter.handle(...))")

@Around("@annotation(org.springframework.web.bind.annotation.RequestMapping)")

public Object logTimer( ProceedingJoinPoint thisJoinPoint) throws Throwable {

String clazzName = thisJoinPoint.getTarget().getClass().getName()

String métodoName = thisJoinPoint.getSignature(); .

// Temporizador y llamada a la función de destino

long start = System.currentTimeMillis()

Resultado del objeto = thisJoinPoint.proceed(); p> p>

long time = System.currentTimeMillis() - start;

// Información de tiempo de salida

logger.info("Tiempo de operación :" + tiempo + "ms ClassName:" + clazzName+ " MethodName: " + métodoName + "()");

devolver resultado;

}

}

La siguiente declaración de configuración se agrega al archivo de configuración de spring-servlet:

<:aspectj-autoproxy proxy-target-class="true" /> <. ! -- Los comentarios de aspecto entran en vigor -->

El archivo de configuración mvc del autor es Spring -servlet.xml.

El archivo de configuración completo es el siguiente:

[html] ver copia simple

< - ViewResolver predeterminado -->

< bean id= "viewResolver"

class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>