`
jakoes
  • 浏览: 69004 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

spring工具类AnnotationUtils和ClassUtils使用小结

阅读更多
假设有以下类:
public class TravelModel {

	
	@Required
	@Column(desc="卡类型",allowedValues={"0","1"},defaultValue="0")
	private String cardType;

	@Required
	@Column(desc="卡号")
	private String acctCard;

	...
}

此bean的大概的含义为,使用两个自定义的annotation来标注field。如此field是否是必需的,field的中文描述,允许的值,默认值。

两个Annotation的定义:
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Required {

}


@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Column {

	public String desc();
	
	public String[] allowedValues() default {};

	public String defaultValue() default "";
}


方法一:
AnnotationUtils.getAnnotationAttributes(Annotation)

此方法可以将指定的annotation的所有属性都及值都获取到,并以key-value的形式存放到map里。
方法二:
public static Object getValue(Annotation annotation, String attributeName)

此方法可以获取指定annotaion中某个属性的值。

示例:
		//get all fiedls 
		Field[] fields = TravelModel.class.getDeclaredFields();
		for(Field f:fields){
			Annotation[] annos = f.getAnnotations();
			for(Annotation a:annos){
				if(a instanceof Column){
					//get all attributes
					Map map = AnnotationUtils.getAnnotationAttributes(a);
					//get value
					Object obj = AnnotationUtils.getValue(a, "desc");
				}
				...


结果:
map的值如图:



obj的值为“卡类型”。

AnnotationUtils写得虽功能简单,但封装极其简练,堪称经典。另,此类是抽象类,我们可以在它上面进行扩展。

我们来看另一个类ClassUtils:
有时我们获取到的class或interface为如下的形式:
interface cps.apm.util.fileprocessor.annotation.Required

但其实我们想要的是下面的形式:
cps.apm.util.fileprocessor.annotation.Required


Required


spring的ClassUtils给我们提供的这样的方法:
ClassUtils.getShortName() //获取短类名,如上例中的:Required
ClassUtils.getClassFileName() //获取类文件名,如上例中的:Required.class
ClassUtils.getPackageName() //获取包,如上例中的:cps.apm.util.fileprocessor.annotation
ClassUtils.getQualifiedName() //获取包名+类名,如上例中的:cps.apm.util.fileprocessor.annotation.Required

  • 大小: 5.2 KB
分享到:
评论

相关推荐

    redis utils 工具类

    Redis Utils工具类是Java开发中常见的一种封装,用于简化与Redis数据库的交互操作。Redis是一种高性能的键值存储系统,广泛应用于缓存、消息队列、数据持久化等多个场景。在Java开发中,为了提高代码的可读性和复用...

    个人总结常用经典Utils工具类

    1、Utils工具类有String工具类、XmlNode节点工具类、BeanFactory相关、Common工具类、Cookie工具类、Date工具类、Http工具类、JDBC工具类、日志Log工具类、Servlet相关等。2、工具类省了重复造轮子的工作,可以直接...

    RedisUtils工具类

    RedisUtils工具类

    springboot 集成封装redis工具类redisUtils和单元测试

    文章是redisUtils工具类的封装,和基于springboot环境的单元测试; 文中封装了redis的众多方法,希望对您有所帮助。

    Spring Utils工具类常用方法实例

    Spring Utils工具类是Spring框架中提供的一组实用工具类,主要用于框架内部使用。这些工具类提供了一些简单的方法,并且提供了易于使用的方法在分割字符串、集合和数组等方面。下面我们将介绍Spring Utils工具类中的...

    java组件开发(9)ClassUtils

    java组件开发(9)ClassUtils

    可能是方法最全Redis静态工具类(RedisUtils.java)

    可能是最全的Redis静态工具类,拿来即用,随时随地RedisUtils.方法名()存取数据,每个方法都有对应的注释,快速上手!

    springboot使用rabbitmq工具类

    springboot使用rabbitmq工具类,里面包含比较原生的方法,还有一套是我结合springboot框架写的一套方法,里面有两个方法,看情况使用,一般使用框架的方法比较好,因为框架方法时前辈们封装好经过检验的没有问题的方法,...

    util_ExcelUtils工具类_

    在Java编程中,`util_ExcelUtils`工具类是一个用于操作Excel文件的实用程序类,它可以帮助开发者方便地读取Excel文件中的数据以及生成新的Excel文件。Excel文件通常被广泛用于数据存储、报告生成和数据分析等领域,...

    Base64Utils java工具类

    Base64Utils java工具类

    java utils 工具类

    本篇文章将聚焦于“Java Utils 工具类”,特别是通过分析提供的`ProcessUtil.java`文件,来深入理解如何构建和使用这样的工具类。 ### 1. Java工具类的基本概念 工具类通常包含一组静态方法,用于执行特定任务,如...

    Base64Utils工具类

    后台字符串base64解密

    commons.lang3.ClassUtils 源码中文注释

    org.apache.commons.lang3.ClassUtils 源码中文注释,之后会加上其他的工具类注释,方便以后复习阅读

    java常用工具类整理

    5. org.springframework.util.xml.ClassUtils 用于 Class 的处理工具类,常用的方法有 getShortName()、getAllInterfaces() 等。 6. org.springframework.util.xml.LinkedMultiValueMap 一个 key 可以存放多个值的 ...

    (实现的工具python工具类)utils.rar

    在给定的“utils.rar”压缩包中,包含了一个名为“utils”的Python工具类模块,这个模块主要用于日志打印、CRC16校验以及Bytes到16进制的转换。以下是对这些知识点的详细说明: 1. **日志打印**: 在Python中,...

    JAVA28个常用工具类

    4. **ClassUtils.java**: 类操作工具类,提供了一些辅助方法,比如加载类、检查类是否实例化、获取类的属性和方法等。在Spring框架中,有类似的名字为`org.springframework.util.ClassUtils`,它提供了很多实用的类...

    android开发常用工具类utils精装集合

    在Android应用开发中,工具类Utils是不可或缺的一部分。它们通常包含了一系列静态方法,为开发者提供便利的功能,提高代码的复用性和可维护性。"android开发常用工具类utils精装集合"是一个专门针对Android开发者的...

    Python库 | classutils-1.15.3-py2.py3-none-any.whl

    8. **代码重用和模块化**:类工厂函数和模块化的类设计可以帮助提高代码的可读性和可维护性,`classutils`可能包含这类工具。 使用`classutils-1.15.3-py2.py3-none-any.whl`文件,你需要确保你的环境已经安装了...

    java工具类 utils.zip

    "java工具类 utils.zip" 提供了一系列实用的工具类,涵盖了日期处理、字符串操作、JSON解析、Spring Bean操作、加密解密、Base64编码、图像处理、随机数生成以及正则表达式等多个方面。下面我们将逐一探讨这些工具类...

Global site tag (gtag.js) - Google Analytics