通过反射实现javaweb项目中权限的刷新

记录是为了更好的成长!

1、贴一段实际项目的中的代码

/**
     * @Methods: permissionreload
     * @Description: 权限重载 
     * @return
     */
    @RequestMapping("/permissionreload")
    public String permissionreload() {
        
        //0、从数据库中查出所有权限,进行对比,如果已经存在,跳过,不在添加
        List<String> resouceList = permissionService.listPermissionUrls();
        
        //1、获取Controller中所有的RequestMapping
        Map<RequestMappingInfo,HandlerMethod> handlerMethods = rmhm.getHandlerMethods();
        
        Collection<HandlerMethod> values = handlerMethods.values();
        for(HandlerMethod method:values) {
            
            //2、遍历所有方法,判断当前方法是否贴有@RequiresPermissions  权限控制标签
            RequiresPermissions anno = method.getMethodAnnotation(RequiresPermissions.class);
            if(anno != null) {
                
                //取得权限表达式
                String resourcesUrl = anno.value()[0];
                
                //去除重复
                if(resouceList.contains(resourcesUrl)) {
                    continue;
                }
                
                //封装对象,添加到数据库表中
                Permission p = new Permission();
                p.setUrl(resourcesUrl);
                //设置权限名称
                p.setPname(method.getMethodAnnotation(PermissionName.class).value());
                
                //保存到数据库
                permissionService.add(p);
            }    
        }
        return "/login/login";
    }

以上内容代表个人观点,仅供参考,不喜勿喷。。。

原文地址:https://www.cnblogs.com/newbest/p/10054120.html