重新加载
1 @RequestMapping("/reload") 2 @ResponseBody 3 public JsonResult reload(){ 4 JsonResult js = new JsonResult(); 5 try { 6 //获取数据库中的所有权限 7 List<String> permissionList = permissionService.selectExpression(); 8 //从上下文获取所有的controller 9 Map<String, Object> beans = context.getBeansWithAnnotation(Controller.class); 10 for (Object value : beans.values()) { 11 //判断是不是cglib动态代理 12 if (!AopUtils.isCglibProxy(value)){ 13 continue; 14 } 15 //当是cglib的动态代理的时候,获取controller的字节码 16 Class clazz= value.getClass().getSuperclass(); 17 //获取所有的method 18 Method[] methods = clazz.getDeclaredMethods(); 19 //遍历 20 for (Method method : methods) { 21 //获取method上的权限注解 22 RequiresPermissions annotation = method.getAnnotation(RequiresPermissions.class); 23 if (annotation != null){ 24 //获取值 25 String expression = annotation.value()[0]; 26 String name = annotation.value()[1]; 27 28 if (!permissionList.contains(expression)){ 29 System.out.println(expression); 30 System.out.println(name); 31 32 Permission permission = new Permission(); 33 permission.setExpression(expression); 34 permission.setName(name); 35 permissionService.insert(permission); 36 } 37 } 38 } 39 40 } 41 js.setMsg("操作成功"); 42 js.setFlag(true); 43 return js; 44 } catch (Exception e) { 45 e.printStackTrace(); 46 js.setFlag(false); 47 js.setMsg("操作失败"); 48 return js; 49 } 50 }