• springmvc 自定义注解 以及自定义注解的解析


    1,自定义注解名字

    @Target({ElementType.TYPE, ElementType.METHOD})   //类名或方法上
    @Retention(RetentionPolicy.RUNTIME)//运行时

    @component//自定义多个注解,且在一个类中添加两个或以上的,只需要加一个 否则会实例化多次。
    public @interface SocketMapping {
     String value() default "";//参数
    }

    2.测试类


    @SocketMapping("/a")
    public class TestAnno {

     @SocketMapping(value="/b")
     public void ss(){
      System.out.println(11);
     }
     
    }

    3,解析测试类所在的包,反射

    ResourcePatternResolver rpr = new PathMatchingResourcePatternResolver();
      

       Resource[] res = rpr.getResources("classpath*:websocket/**.class");//测试类的包
       
       for(int i=0;i<res.length;i++){
        String className = res[i].getURL().getPath();
        className = className.split("(classes/)|(!/)")[1];
        className = className.replace("/", ".").replace(".class", "");//获取到文件结构  com.xl.joe.testAnno
        Class<?> cla = Class.forName(className);//获取到文件类
        
         if(cla.isAnnotationPresent(SocketMapping.class)){//判断是否存在自定义注解
          System.out.println(cla.getAnnotation(SocketMapping.class).value());//获取自定义注解的属性值
          
         }
         
         Object o = SpringContextUtil.getBean("testAnno");//获取类对象
         
         Method[] methods = cla.getMethods();//获取类的方法
         for(Method method:methods){
          if(method.isAnnotationPresent(SocketMapping.class)){//找到自定义注解
           method.invoke(o, new Object[]{});//反射改方法
          }
         }
        
       }

  • 相关阅读:
    poj 3070(矩阵快速幂入门)
    算阶乘质因数的个数(CodeForces 546D)
    hdu1237(表达式求值)
    分治法—hdu1007
    hdu-2089+初学数位dp!
    hdu-2089+初学数位dp
    线段树入门(更新单个节点)
    CodeForces 1131B(思维题)
    CodeForces 1040B(思维题)
    文献的查找下载与阅读
  • 原文地址:https://www.cnblogs.com/difme/p/5606880.html
Copyright © 2020-2023  润新知