Allen32

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

权限管理注解扫描部分~

由于使用Shiro的注解用到了cglib  真是运行的方法并不是贴有注解的方法 ,而是其父类,所以会导致常规方法拿不到注解,参考网上的资料通过一下的方式可以获得注解,注意红字的部分

 

 

for (Object o : beans.values()) {

            for (Method method : o.getClass().getDeclaredMethods()) {

                //获取RequiresPermissions注解
                RequiresPermissions anno = AnnotationUtils.findAnnotation(method, RequiresPermissions.class);
                //获取获取自定义name注解
                PermissionName perName = AnnotationUtils.findAnnotation(method, PermissionName.class);
                //如果注解不为空进入
                if (anno != null) {
                    //获取RequiresPermissions中的值
                    String express = anno.value()[0];
                    //判断这个值数据库中的表达式是否出现过
                    if (!allExpression.contains(express)) {
                        //如果没有出现过 则new一个permissin对象
                        Permission permission = new Permission();
                        //判断自定义名称是否为空
                        if (perName != null) {
                            //不为空则设置进权限对象
                            permission.setName(perName.value());
                        }
                        //将RequiresPermissions注解的值设置到权限对象
                        permission.setExpression(express);
                        //保存
                        permissionMapper.insert(permission);
                    }


                }




            }
        }

 获取su

 

//获取父类上的方法才有注解
Method[] methods = bean.getClass().getSuperclass().getDeclaredMethods();
posted on 2018-02-01 09:04  Allen32  阅读(125)  评论(0)    收藏  举报