利用srping aop 实现数据权限--主要代码



/**
 * 数据权限 拦截器
 */
@Aspect
@Component
public class DataPermissInterceptor {
    private static final Logger log = LoggerFactory.getLogger(PermissInterceptor.class);

    //定义切点
    @Pointcut("@annotation(net.fxft.antation.DataPermissAnn) ")
    public void point() {}

    /**
     * 环绕通知
     * @param pjp
     * @return
     * @throws Throwable
     */
    @Around("point()")
    public Object trackInfo(ProceedingJoinPoint pjp) throws Throwable {

        String declaringTypeName = pjp.getSignature().getDeclaringTypeName();
        String methodName = pjp.getSignature().getName();
        Object[] args = pjp.getArgs();
        //获取代理的对象 (也就是这个方法所在内存中的对象)
       // Object obj = pjp.getThis();
        Object [] params =new Object[]{} ;
        String sql ="";
        int i = 0 ;
        for(Object o :args){

            if(o instanceof Object[]){
                params= (Object[]) o;
            }else if(o instanceof String){
                sql=(String) o;
                args[i] = "xingzhi";
            }
            i++;
        }

        StringBuilder spendTimeLog=new StringBuilder("方法名称:").append(declaringTypeName).append(".").append(methodName).append("() 耗时为:");
        Thread thread = Thread.currentThread();
        StackTraceElement[] stackTrace = thread.getStackTrace();

        for(StackTraceElement e: stackTrace){
            System.out.println(e);
            if(e.getMethodName().equals("queryPermissDto")){
                System.out.println(e.getClassName()+",方法名:"+e.getMethodName()+",代码行数:"+e.getLineNumber()+"");
            }
        }

        return pjp.proceed(args); //如果不带args就是用原来的参数
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值