zoukankan      html  css  js  c++  java
  • 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[]{});//反射改方法
          }
         }
        
       }

  • 相关阅读:
    windows设置通过NFS连接到Linux共享数据
    MYSQL安装相关知识
    Linux下Eclipse里用gdb调试JNI里C/C++
    linux上安装Eclipse
    vs2010常用快捷键
    .NET Framework 2.0/3.0/3.5 以 v90 平台工具集为目标。请确保在计算机上安装了 Visual Studio 2008
    C++ ->error LNK1123
    Python 函数
    Python安装工具
    Web接口测试理论知识分享
  • 原文地址:https://www.cnblogs.com/difme/p/5606880.html
Copyright © 2011-2022 走看看