spring boot 获取指定类中自定义注解的内容

我就是我 2022-06-08 12:57 1633阅读 0赞

一、获取自定义注解内容:

/**

* 自定义注解内容获取
* @date 2017年9月26日 上午10:53:39
*/
public class RequestLimitUtils {
/**
* 查询指定controller中的功能点信息
* @param clazz: controller类名
* @param enable_validate: 是否只查询@RequestLimit注解中is_validate为true的对象
* @param has_controller_annotation: 是否包含controller类名上的@RequestLimit注解内容
* @return
*/
public static List> geLimitInfo(Class<?> clazz, boolean enable_validate, boolean has_controller_annotation){
List> list = new ArrayList>();
boolean validate_success = true; //启用验证成功或者不启用验证
//HashMap中的key值
String function_file = “function_file”; //文件名
String fun_file_position = “fun_file_position”; //文件位置
String fun_assembly_url = “fun_assembly_url”; //controller对应的访问路径(功能集的路径)
String function_name = “function_name”; //功能点的路径
String name = “name”; //功能点名称
String is_validate = “is_validate”; //是否需要进行权限验证
String desc = “desc”; //功能点或者功能集描述
String total_fun_assembly_url = “”; //功能集对应的请求路径
String fun_file_position_name = clazz.getName();
String function_file_name = clazz.getSimpleName();

  1. //controller类名上的注解
  2. if(clazz.isAnnotationPresent(RequestLimit.class))\{//判断是否含有@RequestLimit注解
  3. RequestLimit requestLimit = clazz.getAnnotation(RequestLimit.class);
  4. if(enable\_validate && !requestLimit.is\_validate())\{//只查询注解中is\_validate为true的
  5. validate\_success = false;
  6. \}else\{
  7. validate\_success = true;
  8. \}
  9. if(validate\_success && has\_controller\_annotation)\{
  10. HashMap<String, String> map = new HashMap<String, String>();
  11. total\_fun\_assembly\_url = requestLimit.fun\_assembly\_url();
  12. map.put(fun\_assembly\_url, requestLimit.function\_name());
  13. map.put(function\_name, requestLimit.function\_name());
  14. map.put(name, requestLimit.name());
  15. map.put(desc, requestLimit.desc());
  16. map.put(is\_validate, requestLimit.is\_validate() + "");
  17. map.put(function\_file, function\_file\_name);
  18. map.put(fun\_file\_position, fun\_file\_position\_name);
  19. list.add(map);
  20. \}
  21. \}
  22. //获取controller各个method上的注解
  23. //Annotation\[\] \_fields = clazz.getDeclaredAnnotationsByType(RequestLimit.class);
  24. Method\[\] methods = clazz.getDeclaredMethods();
  25. //for(Annotation field : \_fields)\{
  26. for(Method method : methods)\{
  27. //RequestLimit requestLimit = (RequestLimit.class)field;
  28. RequestLimit requestLimit = method.getAnnotation(RequestLimit.class);
  29. if(enable\_validate && !requestLimit.is\_validate())\{//只查询注解中is\_validate为true的
  30. validate\_success = false;
  31. \}else\{
  32. validate\_success = true;
  33. \}
  34. if(validate\_success)\{
  35. HashMap<String, String> map = new HashMap<String, String>();
  36. String son\_fun\_assembly\_url = requestLimit.fun\_assembly\_url();
  37. map.put(fun\_assembly\_url, son\_fun\_assembly\_url.length() > 0 ? son\_fun\_assembly\_url : total\_fun\_assembly\_url);
  38. map.put(function\_name, requestLimit.function\_name());
  39. map.put(name, requestLimit.name());
  40. map.put(desc, requestLimit.desc());
  41. map.put(is\_validate, requestLimit.is\_validate() + "");
  42. map.put(function\_file, function\_file\_name);
  43. map.put(fun\_file\_position, fun\_file\_position\_name);
  44. list.add(map);
  45. \}
  46. \}
  47. return list;
  48. \}

public static void main(String[] args) {
List> list = geLimitInfo(AccessModeController.class, true, false);

if(null != list && list.size() > 0){
for(int i=0; i map = list.get(i);
System.out.println(map.toString());
}
}
}

}

二、自定义注解

/**
* 自定义注解
* 如果Controller 有该标记,那么这个Controller下面所有的方法都会被过滤器进行验证
* 如果Controller 没有有该标记,但Controller中的某个方法拥有该标记,那么这个方法将被过滤器验证(其他没有被标记的不会被验证)
* @date 2017年9月21日 下午3:09:11
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE}) //该注解修饰类中的方法,准许controller和子方法添加本注解
//@Target(ElementType.METHOD) //该注解修饰类中的方法,只准许子方法添加本注解
@Order(Ordered.HIGHEST_PRECEDENCE) //最高优先级
public @interface RequestLimit {
/**
* controller对应的访问路径
* 功能集的路径
*/
String fun_assembly_url();
/**
* 功能点的路径
*/
String function_name();

  1. /\*\*
  2. \* 功能点名称
  3. \*/
  4. String name();
  5. /\*\*
  6. \* 是否需要进行权限验证
  7. \*/
  8. boolean is\_validate();
  9. /\*\*
  10. \* 功能点或者功能集描述
  11. \*/
  12. String desc();

}

发表评论

表情:
评论列表 (有 0 条评论,1633人围观)

还没有评论,来说两句吧...

相关阅读