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[]{});//反射改方法
          }
         }
        
       }

  • 相关阅读:
    ref:使用Dezender对zend加密后的php文件进行解密
    MongoDB-Replica Set Deployment Architecture
    MongoDB-Replication Replica Set Arbiter
    MongoDB-Replication Secondary Members
    MongoDB Replication
    MongoDB 备份方法
    scrapy 框架
    MongoDB 指定应用上下文数据模型
    MongoDB 树形模型
    MongoDB 文档模型关系
  • 原文地址:https://www.cnblogs.com/difme/p/5606880.html
Copyright © 2011-2022 走看看