自定义标签注入

来源:互联网 发布:淘宝加盟骗局公安查吗 编辑:程序博客网 时间:2024/06/08 06:28

1、首先创建一个自定义的标签 Label

@Target(FIELD)
@Retention(RUNTIME)
public @interface Label {
    String value();
}

2、Label 标签的使用

public class Customer{
    @Label("客户标识")                 //默认value
    private Long customerId;        //客户标识
    @Label("分类标识")
    private Long corpClassId;       //分类标识

}

3、标签工具类

public class LabelUtils {
    
    private static Map<Class, Map<String, String>> pool = 
        new HashMap<Class, Map<String, String>>();
    
    private LabelUtils() {
        
    }
    
    public static Map<String, String> getLabels(Class c) {
        if(pool.containsKey(c)) {
            return pool.get(c);
        }


        Map<String, String> map = new HashMap<String, String>();
        Class cc = c;
        do {
            Field[] fields = cc.getDeclaredFields();
            for(Field field : fields) {
                Label ann = field.getAnnotation(Label.class);
                if(ann != null) {
                    map.put(field.getName(), ann.value());
                }
            }
            cc = cc.getSuperclass();
        } while(!cc.getName().equals("java.lang.Object"));
        pool.put(c, map);
        return map;
    }
}


4、测试 

public class Test{

 public void static main(String[] args){

       Map<String, String>  map  =  LabelUtils .getLabels(Customer.class)

     for(String key:map.keySet())
        System.out.println(key+":"+map.get(key));       

}

}



输出结果为:customerId :客户标识

                        corpClassId: 分类标识       




0 0
原创粉丝点击