springmvc配置aop

时间:2021-08-22 14:38:47

直接看代码

springmvc中的配置aop对 controller和它的子包进行拦截

springmvc中的配置

<!--xml头部配置需要有这几行代码-->
xmlns:aop="http://www.springframework.org/schema/aop"
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd <aop:aspectj-autoproxy proxy-target-class="true" />
<bean id="logAopAction" class="com.um.framework.baseware.webadmin.modules.controller.core.LogAopAction"/>
<!--aop执行操作的类-->
package com.um.framework.baseware.webadmin.modules.controller.core;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut; @Aspect
public class LogAopAction {
//配置接入点,如果不知道怎么配置,可以百度一下规则
@Pointcut("execution(* com.um.framework.baseware.webadmin.modules.controller..*.*(..))")
private void anyMethod(){
System.out.println("log记录------------------------");
}//定义一个切入点 @Before("anyMethod() && args(name)")
public void doAccessCheck(String name){
System.out.println(name);
System.out.println("前置通知--------------------------");
} @AfterReturning("anyMethod()")
public void doAfter(){
System.out.println("后置通知-------------------------");
} @After("anyMethod()")
public void after(){
System.out.println("最终通知---------------------------");
} @AfterThrowing("anyMethod()")
public void doAfterThrow(){
System.out.println("例外通知-----------------------------------");
} @Around("anyMethod()")
public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable{
System.out.println("进入环绕通知------------------------------");
Object object = pjp.proceed();//执行该方法
System.out.println("退出方法--------------------");
return object;
}
}