`
程序新手
  • 浏览: 58433 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 自定义Annotation步骤

阅读更多

 

  1)自定义Annotation接口,如下所示

 

@Retention(RetentionPolicy.RUNTIME) 
@Target(ElementType.METHOD)
public @interface MyAnnotation {
	String name()    default "[defaultMethod]";
}

 

  其中RetentionPolicy表示指定保留多长的注释,其取值范围为

 

CLASS
          编译器将把注释记录在类文件中,但在运行时 VM 不需要保留注释。
RUNTIME
          编译器将把注释记录在类文件中,在运行时 VM 将保留注释,因此可以反射性地读取。
SOURCE
          编译器要丢弃的注释。

 

  ElementType代表什么情况下使用注释类型是合法的

 

ANNOTATION_TYPE
          注释类型声明
CONSTRUCTOR
          构造方法声明
FIELD
          字段声明(包括枚举常量)
LOCAL_VARIABLE
          局部变量声明
METHOD
          方法声明
PACKAGE
          包声明
PARAMETER
          参数声明
TYPE
          类、接口(包括注释类型)或枚举声明

 

(2)自定义类,在类中调用使用自定义注解

public class MyNameClass {
	
	@MyAnnotation(name="test1")
	public void testOne(){
		System.out.println("testOne");
	}
	@MyAnnotation(name="test2")
	public void testTwo(){
		System.out.println("testTwo");
	}
	@MyAnnotation(name="test3")
	public void testThree(){
		System.out.println("testThree");
	}
	
}

 (3)主方法,在主方法中通过反射调用此类

 

public class TestMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		
		Object obj = Class.forName("com.test.annotation.MyNameClass").newInstance();
		for (Method m : obj.getClass().getMethods()) {
			if (m.isAnnotationPresent(MyAnnotation.class)) {
				try {
System.out.println(m.getAnnotation(MyAnnotation.class).name());
				    //TODO 在业务中需要添加的功能,如登录验证、缓存等等等等
					m.invoke(obj);
				} catch (Exception ex) {
                    ex.printStackTrace();
				}
			}
		}
	  }
}

 

   我们在实际开发中可以通过Spring框架完成拦截,自定义类继承MethodInterceptor类,重载invoke方法,具体可以根据业务需要去写

2
0
分享到:
评论

相关推荐

    JAVA上百实例源码以及开源项目源代码

    Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,Java源码下载 1个目标文件 摘要:Java源码,网络相关,HTTP  Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件...

    Java开发详解.zip

    031602_【第16章:Annotation】_自定义Annotation笔记.pdf 031603_【第16章:Annotation】_反射与Annotation笔记.pdf 031604_【第16章:Annotation】_深入Annotation笔记.pdf 031701_【第17章:Java数据库编程】_...

    JAVA上百实例源码以及开源项目

    Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,Java源码下载 1个目标文件 摘要:Java源码,网络相关,HTTP  Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件...

    疯狂JAVA讲义

    10.4.2 自定义异常类 371 10.4.3 catch和throw同时使用 371 10.4.4 异常链 373 10.5 Java的异常跟踪栈 374 10.6 异常处理规则 376 10.6.1 不要过度使用异常 377 10.6.2 不要使用过于庞大的try块 378 10.6.3 ...

    Java/JavaEE 学习笔记

    第四章 Annotation.102 XML学习笔记...............106 XML前言...............106 第一章 XML Overview....................107 第二章 DTD...........109 第三章 XML Namespaces................111 第四章 XML ...

    Android 对sqlite的封装,实现CRUD

    下面简单的说一下使用步骤,如果觉得多余,可以无视。 1. 实现自己的DBHelper: /** * * @author Kee.Li * * 1. 继承了SmartDBHelper,不需要重写SQLiteOpenHelper的那两个方法 * 2. 父类构造方法参数...

    低清版 大型门户网站是这样炼成的.pdf

    6.1 java程序员的春天厚礼—spring 2.5 349 6.1.1 爱上spring 2.5的十大理由 350 6.1.2 一睹spring 2.5芳容 351 6.1.3 spring 2.5拿手戏——控制反转与依赖注入 353 6.1.4 何为“面向切面编程aop” 356 6.1.5 ...

    day021-反射和注解笔记和代码.rar

    枚举是一种类,注解(指的是注解Annotation)是一种接口; 每个数组都是 Class字节码类中的一个具体 对象 基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也表示...

    J2EE学习笔记(J2ee初学者必备手册)

    第四章 Annotation.102 XML学习笔记...............106 XML前言...............106 JavaEE@xuxiang 2 Java/JavaEE学习笔记Jonny xuxiang5612@sina.com 第一章 XML Overview....................107 第二章 DTD.........

Global site tag (gtag.js) - Google Analytics