SpringMVC中配aop拦截不生效,咋回事
1个回答
2016-09-30 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
首先我的aop切面类文件路径有问题,后来移到了logic下的util包中;
<aop:aspectj-autoproxy proxy-target-class="true"/>
放在spring-mvc.xml中即可。
附上拦截controller的类:
package com.ts.bg.logic.util;
import javax.servlet.http.HttpServletRequest;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
@Component
@Aspect
public class IndexAopUtil {
//设置切入点,匹配所有controller的toIndex方法
public static final String INDEX_LIST_INIT="execution(* com.ts.bg.controller.*.toIndex(..))";
@Around(INDEX_LIST_INIT)
public Object index_list_init(ProceedingJoinPoint joinPoint) throws Throwable{
Object object =null;
Object[] args = joinPoint.getArgs();
if(args!=null){
HttpServletRequest request=(HttpServletRequest) args[0];
object=joinPoint.proceed();
//设置菜单编号
request.setAttribute("menuCode", request.getParameter("menuCode"));
}
return object;
}
}
该类的意义:拦截所有controller目录下的controller中的toIndex方法。
网上有说controller类拦截不到,用其他方式,我试过了,不行。
可能和spring版本有关系,我的是spring4.x。
<aop:aspectj-autoproxy proxy-target-class="true"/>
放在spring-mvc.xml中即可。
附上拦截controller的类:
package com.ts.bg.logic.util;
import javax.servlet.http.HttpServletRequest;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
@Component
@Aspect
public class IndexAopUtil {
//设置切入点,匹配所有controller的toIndex方法
public static final String INDEX_LIST_INIT="execution(* com.ts.bg.controller.*.toIndex(..))";
@Around(INDEX_LIST_INIT)
public Object index_list_init(ProceedingJoinPoint joinPoint) throws Throwable{
Object object =null;
Object[] args = joinPoint.getArgs();
if(args!=null){
HttpServletRequest request=(HttpServletRequest) args[0];
object=joinPoint.proceed();
//设置菜单编号
request.setAttribute("menuCode", request.getParameter("menuCode"));
}
return object;
}
}
该类的意义:拦截所有controller目录下的controller中的toIndex方法。
网上有说controller类拦截不到,用其他方式,我试过了,不行。
可能和spring版本有关系,我的是spring4.x。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询