搭建自己的框架,N步曲
引言
自己的杂文,写的不是很好,见谅。
本章讲解主题内容与自定义框架内容,从注解到xml定义,到常用功能。字符处理,数据内容处理,前台后台数据对接,json,文件上传下载,即时通信,等等,我能想到的东西,创建自己的框架。其中肯定有很多不完善,和现有的框架差距相当大的地方,所以请理解,这类文章只是为了提升java编程而设定,并不是为了与市面上成熟的框架做比拼。
文中很多东西都是现学的,不能说【我能】
正文
说注解,在java编程中,注解是非常常见的,无论是常见的@Override还是常说的各种框架提供的注解。或多或少的需要用到。今天我就去实现以下注解的过程。
java中的注解,定义一切注解的注解称之为【元注解】,可以理解为Object对象。
java中提供的元注解分别为
首先来说说两个重要元注解
@Target:目标注解。该注解表明该定义注解的使用范围
使用范围定义
ElementType.TYPE:接口、类、枚举、注解
ElementType.FIELD: 字段、Enum枚举常量
ElementType.METHOD :方法
ElementType.PARAMETER :方法参数【在mybatis中提供的`@param】
ElementType.COSTRUCTOR:构造方法【少见】
ElementType.LOCAL_VARIABLE局部变量【没用过暂时】
ElementType.ANNOTATION_TYPE注解【你没有看错,注解也是可以注解注解的。。】
ElementType.PACKAGE包 【这个貌似看到的很少哎】
使用方法 @Target(ElementType.METHOD)
@Retention:保留政策。该注解定义java编译时的保留方式
保留方式种类
RetentionPolicy.SOURCE :仅存于源码中,编译[.class]时舍弃
RetentionPolicy.CLASS :编译于.class中,但是无法运行时使用
RetentionPolicy.RUNTIME : 编译于【.class】文件中,并且可以通过反射获取
使用方法 @Retention(RetentionPolicy.RUNTIME)
像 @Override 就属于源码注解,在编译class时就舍弃掉了。
其余两种,一种的定义为【javadoc】使用的@Documented,另一种就是定义可以被继承的 @Inherited 注解
现在开始定义一个注解
/**
* 在java注解中 定义与书写class类似,使用【@interface】 表示定义当前对象为注解
* 对象在注解对象中,只需要声明注解对象内容,不需要注解具体实现
* 下方示例:定义注解用于方法,并且在运行时可以被获取到
*/
@Target(ElementType.METHOD)//该注解将用于方法
@Retention(RetentionPolicy.RUNTIME)//在运行时起作用
@Inherited//可以被继承
public @interface Role{
/*
* 定义注解的一个元素【或者称之为方法】,该元素用来接受注解的值
* String role() default "defValue"; 指派当前的元素的默认值
*/
String role();
}
使用方法
public class AnnotationTest{
@Role(role="myRole")//这里是使用刚刚定义的注解
public void testMethod(){
//TODO 这里是方法体
}
}
以上就是注解的定义全过程,附录注解图一张