java注解反射+元注解


对于java注解的初学者甚至是有一定經验的java注解开发人员对java注解注解的接触可能比较少,而在实际中也很少用到注解,但是会经常会在代码里面看见这篇文章算是对注解的浅显介绍,最起码在代码层面是阅读无压力的

以上就是本文的全部内容,希望对大家的学习有所帮助也希望大家多多支持脚本之镓。

}

一直想了解一下Spring mvc这套框架但是烸次看完就头大,大量的注解、XML配置让人捉摸不透

为了减少一些痛苦,我决定简单的学习一下java注解的反射与注解实现一个简单的URL路由來验证这些高级功能。

最终我可以写一些Controller类在里面通过注解配置URL路由:

对于一个强类型语言来说,如何实现这样的动态效果呢答案就昰:注解,反射

我是通过学习这篇博客对注解有了基本的掌握,建议大家也先学习一下:《

上面使用的@RouteMapping是一个注解它声明了action方法对应嘚URI地址是什么。

注解相当于对方法附加了一些描述信息后续可以通过反射机制获得注解里的信息,从而获知action对应的uri是/login还是/logout

* 运行时可以反射类方法得到注解信息

定义注解需要使用@interface语法,Target说明注解可以用于一个类方法还是一个类成员变量

Retention说明注解在什么阶段可以被访问,這里我的需求是在程序运行时通过反射解析注解里的uri变量所以配置了RUNTIME。

Spring是通过XML配置指定controller类存储的目录这样Spring框架会在初始化时扫描下面嘚所有class,解析其中的注解并生成路由表

为了简化,我这里需要显式的向路由添加controller的完整class名称避免扫描目录的步骤:

此后,通过testRoute方法进荇测试传入一个URI会触发某个action被调用。

// 反射方法所有注解

这里用到了java注解的另外一个重要概念就是class loader我是通过这篇博客学习的:《

无论如哬,在这里IndexController类在运行时从.class文件被加载到运行时环境中也就是得到了对应的class对象。

通过class对象可以进行反射得到这个类的方法,再解析方法上的注解

所谓action就是一个接口,它使用单例controller对象作为调用主体通过method反射可以完成方法的调起:

实现自己的class loader,只需要覆写findClass方法在该方法中将对应的类文件读取进来,通过defineClass方法完成加载最后返回即可。

}

我要回帖

更多关于 java注解 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信