通过反射实现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"; }
以上内容代表个人观点,仅供参考,不喜勿喷。。。