`

java自定义注解

    博客分类:
  • java
 
阅读更多

我一直认为注解是一种高大深的技术,通过学习,慢慢认识到注解其实和xml配置文件非常类似,通过java反射取到注解中所配置的值; 

元注解:

  元注解的作用就是修饰其他注解。它们被用来提供对其它 annotation类型作说明。
    【1】@Target,
    【2】@Retention,
    【3】@Documented,
    【4】@Inherited

       首先我定义一个@Tbale的注解用于和数据库做映射关系,我们知道数据库和实体映射在mybats中是在xml 中的。

       @Target注解的作用是限制自定义注解所使用的范围,比如你定义的注解想用在类上,想用在方法上,以及属性上等,也可以用在多个上边,就在该注解定义,具体怎么定义的看下边:

 @Target中有枚举类ElementType,我们打开java API 找到该枚举


  比如我要让自定义的注解放在类上,

@Target(ElementType.TYPE)    

如果我们想把自定义注解放在多个地方,

@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })

 

        @Retention:注解保留的时间 

         枚举类RetentionPolicy



 

一般我们都会在运行时保留

@Retention(RetentionPolicy.RUNTIME)

@Documented用于描述其它类型的annotation应该被作为被标注的程序的公共API生成文档,具体可参考:http://blog.sina.com.cn/s/blog_b0d8ecae01019gi1.html

@Inherited 当有子类继承加有@Inherited自定义注解的类时自定义注解也会被子类继承。

 

 

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 
 * @author pengbaowei
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Table {
	
	public String name() default "";
	
	public String dbName() default "ilp";
	
	public enum DbType{ORACLE,MYSQL,DB2};
	
	DbType fruitColor() default DbType.MYSQL;
	
}

    这是一段利用反射从注解中取值的代码

 

 /**
	    * 根据实体类的注解获和数据库表对应的字段,以及所对应的get方法名
	    * @param clazz
	    * @return
	    */
	   private static  Map<String,String> getHaveAnnotation(Class<?> clazz){
		   Map<String,String> map=new HashMap<String,String>();
		   //判断类上有没有@Table注解
		   if(clazz.isAnnotationPresent(Table.class)){
			         Table annotation = clazz.getAnnotation(Table.class);
			         if(!annotation.name().equals("")){
			        	  //将表名保存到map中
			        	  map.put("tableName", annotation.name());
			        	  List<Method> methodList = Arrays.asList(clazz.getDeclaredMethods());
						  for(Method  method : methodList){
							 //判断是否有注解@Column并且不存在@Transient注解
							  if(method.isAnnotationPresent(Column.class)&&!method.isAnnotationPresent(Transient.class)){
								   //得到字段的名称
								   String name = method.getAnnotation(Column.class).name().toUpperCase();
								  if(!"".equals(name)){
									  //得到方法名
									  String methodName = method.getName();
									  map.put(name,name+";"+methodName);
								   }
							  }
						  }
			        }
		   }
		  return map;
	   }

 

       

  • 大小: 18.6 KB
  • 大小: 16 KB
分享到:
评论

相关推荐

    java 自定义注解验证

    在本案例中,作者创建了三个自定义注解,具体细节虽未详述,但我们可以深入探讨一下Java自定义注解的基本概念、创建过程以及如何进行验证。 首先,我们需要理解Java注解的基本原理。注解是一种元数据,它提供了一种...

    Java自定义注解使用反射获取字段注解

    Java自定义注解是Java语言中的一个重要特性,它允许我们创建自己的元数据,为代码提供额外的信息。在Java中,注解(Annotation)主要用于编译器检查、代码生成、运行时处理等方面。本文将深入探讨如何通过反射机制来...

    Java自定义注解实例

    Java自定义注解是Java编程语言中的一个重要特性,它允许程序员在代码中插入元数据,这些元数据可以被编译器或运行时环境用来执行特定的任务。自定义注解不仅提高了代码的可读性,还简化了代码处理,特别是在框架和库...

    java自定义注解接口限流demo

    java自定义注解接口限流demo; java自定义注解接口限流demo; java自定义注解接口限流demo; java自定义注解接口限流demo; java自定义注解接口限流demo; java自定义注解接口限流demo; java自定义注解接口限流demo...

    java自定义注解实践

    "java自定义注解实践" Java 自定义注解实践是 Java 语言中的一项重要特性,它可以使开发者自定义注解,以满足不同的需求。在本文中,我们将详细介绍 Java 自定义注解的概念、特点、实现方式及实践应用。 概念 ----...

    java自定义注解和通过反射获取注解

    Java自定义注解和通过反射获取注解是Java编程中重要的高级特性,它们极大地增强了代码的可读性和可维护性。注解(Annotation)是一种元数据,提供了在编译时和运行时对代码进行标记的方法,而反射(Reflection)则是...

    java自定义注解实现由类自动生成表

    在Java编程中,自定义注解(Annotation)是一种强大的元数据机制,允许程序员在源代码中插入信息,这些信息可以被编译器、IDE或运行时环境用来进行各种处理。自定义注解使得代码更加可读,易于维护,并且可以自动化...

    Java自定义注解与spring BeanPostProcessor详解

    Java自定义注解和Spring的BeanPostProcessor是Java企业级开发中的两个重要概念,它们在构建灵活、可扩展的应用程序中发挥着关键作用。本文将深入探讨这两个话题,并结合源码分析,帮助开发者更好地理解和应用。 ...

    java 自定义注解

    Java自定义注解是Java平台提供的一种元数据机制,它允许程序员在代码中添加额外的信息,这些信息可以被编译器、JVM或其他工具在编译时或运行时读取,用于实现各种功能,如代码生成、代码分析、依赖注入等。...

    spring aop 自定义注解保存操作日志到mysql数据库 源码

    3、对spring aop认识模糊的,不清楚如何实现Java 自定义注解的 4、想看spring aop 注解实现记录系统日志并入库等 二、能学到什么 1、收获可用源码 2、能够清楚的知道如何用spring aop实现自定义注解以及注解的逻辑...

    Java自定义注解md,学习代码

    Java自定义注解是Java语言中的一个重要特性,它允许开发者创建自己的元数据,为代码提供额外的信息,这些信息可以被编译器或者运行时环境用来进行特定的处理。自定义注解可以用于代码的编译检查、代码生成、运行时...

    java 自定义注解的实例详解

    Java 自定义注解的实例详解 Java 自定义注解是 Java 语言中的一种重要特性,它可以用于创建文档,跟踪代码中的依赖性,并且可以执行编译时期检查。自定义注解可以让开发者根据需要创建自己的注解,以满足特定的需求...

    自定义注解实现伪动态传参的小demo

    自定义注解是扩展Java功能的强大工具,可以用于实现各种目的,如代码生成、编译时检查、运行时处理等。在这个“自定义注解实现伪动态传参的小demo”中,我们将探讨如何创建一个自定义注解,以允许在注解中传递类似于...

    java 自定义注解例子

    本教程将通过一个超市自动售卖机的例子来详细讲解如何在Java中实现自定义注解。 首先,我们需要了解注解的基本结构。在Java中,注解以`@`符号开头,后面跟着注解的名称。自定义注解的定义类似于接口,但使用`@...

    java自定义注解\标签库\监听\junit简单测试

    Java自定义注解是Java平台提供的一种元编程机制,它允许程序员在源代码中的任何元素(类、方法、变量等)上添加元数据。自定义注解可以被编译器或者运行时系统用来执行特定的任务,例如代码分析、性能监控、持久化...

    Java自定义注解Annotation的使用

    ### Java自定义注解Annotation的使用 #### 1. 前言 自从JDK 1.5引入了注解这一特性以来,它已经成为Java开发中的一个重要组成部分。注解最初是为了推动EJB 3.0的普及和发展而设计的,其目的是减少配置文件的使用,...

    实现java自定义注解拦截器.docx

    ### 实现Java自定义注解拦截器 #### 概述 本文主要介绍如何在Spring Boot项目中使用自定义注解来实现对特定方法的拦截功能。具体场景为:当访问项目中的控制器方法时,需要进行“token验证”,但登录等特殊方法...

    java自定义注解学习范例

    Java自定义注解是Java语言中的一个重要特性,它允许开发者创建自己的元数据,为代码添加额外的信息,使得编译器、IDE(集成开发环境)或运行时系统能够根据这些信息进行处理。这篇学习范例主要涵盖了如何在Java中...

Global site tag (gtag.js) - Google Analytics