之前实习参与一个创新性的框架的开发工作,之前就有要开发一个框架的想法但是却一直没有付诸行动,这个项目也暴漏出了自己很多的不足,其中注解就是我一个很大的盲点,记得第一次使用注解是在使用Juint测试框架的时候使用@Test注解编写测试代码,当时就感觉好高端,竟然可以脱离main函数运行程序,之后使用Spring MVC中的各种注解像@Controller、@AutoWire、@RequestMapping、@RequestBody等注解的功能是相当好用省去了配置XML的麻烦。虽然使用过很多注解但是对注解的实现原理还是两眼一抹黑。所以现在正好利用这个机会一要探注解的奥妙。
注解是在java 1.5中添加的新特性,是对来自像C#之类的语言对Java语言特性压力所做出的一种回应。注解在<<Think in Java>>中的定义是:注解(也被成为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便的使用这些数据。
那么我们来看一下在开发中使用注解的好处:
1,注解可以用来生成描述符文件,甚至或是新类的定义,并且有助于减轻编写“板代码”的负担。
2,更加干净易读的代码以及编译期类型检查。
那么我们经常见到的Java中遇到的注解都有哪些呢?Java5中内置了三种注解,在java.lang包下:
1,@Override,表示覆盖或者实现超类中的方法。如果方法签名和超类中的不一样怎会提示错误。
2,@Deprecated 如果程序员使用了注解为它的元素,那么编译器会发出警告信息。
3,@SuppressWarnings 关闭不当的编译器警告信息。
另外还有四类注解用于新注解的创建。
@Target表示注解可以用在什么地方,
其中可能的ElementType参数有
1、CONSTRUCTOR:作用于构造器
2、FIELD:作用于域(包括enum实例)
3、LOCAL_VARIABLE:作用于局部变量
4、METHOD:作用于方法声明
5、PACKAGE:作用于包
6、PARAMETER:作用于参数
7、TYPE:作用于类、接口(包括注解类型)或者enmu声明
@Retention表示需要在什么级别保存该注解信息。可选的RetentionPolicy参数包括
1、SOURCE:注解在代码层面,在编译时向北抛弃
2、CLASS:注解在class文件层面,但是会被JVM所抛弃。
3、RUNTIME:JVM将在运行期间保留注解,因此可以通过反射机制读取注解的信息。
@Document标识将注解包含在Javadoc中
@Inherited表示允许子类继承父类中的注解
下面举出一个定义注解的例子,确实有点像定义接口不过这里在interface前面多了一个@
@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface AutoTrigger { public int id(); public String description() default "no description"; }
注解的使用会涉及到注解的扫描,记得在使用Spring的时候会经常配置要扫描的路径,在扫描的时候必然会涉及到一些反射的知识,典型的例子就是Spring MVC在框架中用到了@RequestMapping,而且被RequestMapping所修饰的方法还需有方法参数的自动赋值,我当时就对这两块进行了着重的研究并自己实现了类似的功能,流程无外乎先把源代码中的添加注释的类,方法扫描出来并存储在Map中,请求路径为Key,方法Method实例作为值 ,当HTTP请求过来以后对请求进行解析,然后在Map中找到对应的Method,然后根据请求的参数对此方法中的参数进行赋值,最后进行invoke,不过里面的处理细节会更加复杂一些。当时使用了javasist来对参数名进行获取。将注解添加进自己的项目中会大大的减少系统中的冗余代码,用过之后就会发现还是瞒酷的。
相关推荐
python大作业基于pyqt5框架设计的音乐播放器项目源码+超详细注释(带GUI界面).zippython大作业基于pyqt5框架设计的音乐播放器项目源码+超详细注释(带GUI界面).zippython大作业基于pyqt5框架设计的音乐播放器项目...
Java注解是一种在Java语言中用来为代码元素(如类、方法、变量等)提供元...通过实际应用和验证,本框架设计有助于解决传统Drools开发中遇到的问题,如无法语法检查、无法调试等,同时保证了规则的可维护性和可扩展性。
在文档提供的信息中,作者雷筱珍通过“完全基于注解方式SSH框架项目设计”这篇文章,向读者详细阐述了SSH框架项目设计中注解应用的具体方法。文章中提到的参考文献,如《Struts, Hibernate, Spring集成开发宝典》和...
Struts2是一个基于MVC设计模式的Web应用框架,它通过Action类处理用户请求。在Struts2中,注解可以替代XML配置文件来定义Action类和方法。例如,`@Action`注解用于标记一个类为Action,而`@Result`注解则用来定义...
配合Bootstrap,一个流行的前端框架,可以快速创建响应式和移动优先的网页设计。Bootstrap提供了预定义的CSS样式、JavaScript插件和HTML结构,让开发者能够快速构建美观的用户界面。 在实际项目中,"zxjyssh"可能...
本教程将深入探讨如何使用注解来构建SSH框架,以实现更简洁、高效的应用程序开发。 **Struts2** 是MVC设计模式的一个实现,主要负责处理HTTP请求并分发到相应的业务逻辑。在传统Struts2中,我们通常会通过XML配置...
Struts2是一个强大的Java web开发框架,它基于MVC(Model-View-Controller)设计模式,为构建可维护性高、结构清晰的Web应用程序提供了一种解决方案。这个框架旨在简化开发过程,提高代码的可测试性和可重用性。下面...
本项目是基于Java的简单javabean注解验证框架设计源码,包含25个文件,其中包括20个Java源文件、2个XML文件、1个gitignore文件、1个Markdown文档和1个Properties文件。该项目是一个简单的javabean注解验证框架,通过...
反射的应用场景广泛,如插件系统、框架设计、单元测试等。 注解(Annotation)是Java中的元数据,它为编译器和JVM提供了有关代码的附加信息。注解可以用于代码的编译时检查、运行时处理、文档生成等。常见的注解有@...
通过这些脚本,你可以了解如何设计数据库表结构以适应SSH2框架的需求,以及如何利用Hibernate的注解进行数据库表和实体类的映射。 总的来说,SSH2框架全注解实例的学习,可以帮助初学者快速掌握Java Web开发的核心...
2. **Struts2框架**:Struts2是基于MVC设计模式的Web应用框架,它极大地简化了Java Web开发。在注解模式下,可以使用`@Action`注解标识一个类或方法为Action,`@Result`定义结果页面,`@Param`处理请求参数。这样,...
一个BaseActivity基类 封装了不同网络访问状态下界面切换 toolbar标准 以及DataBinding实现无需findViewbyid 和Butterknife超长注解成员变量 Activity管理类
Java注解,也称为标注,是Java开发中的一个重要特性,自JDK 5.0引入。它们提供了一种元数据的方式,允许程序员在代码中添加信息...在实际项目中,结合Java注解和框架如Spring,可以实现松耦合和高度模块化的架构设计。
Struts框架作为MVC设计模式的实现,主要处理HTTP请求并控制应用流程。在非注解版本中,主要依赖`struts2-core.jar`、`struts2-convention-plugin.jar`等,这些库负责处理Action的映射、视图的跳转以及结果的处理。 ...
本项目是基于MVC模式的轻量级Z-PHP框架设计源码,主要使用PHP进行开发。项目共包含25个文件,其中PHP源代码文件21个,Git忽略配置文件gitignore 1个,项目许可证文件LICENSE 1个,Markdown文档文件md 1个,以及TTF...
**Struts2** 是一个基于MVC设计模式的Web应用框架,用于替代Java Servlet API来构建动态网站。在Struts2中,使用注解可以避免传统的XML配置,使得控制器(Action)的定义更加简洁。例如,`@Action` 注解用于标识一个...
Struts2是一个基于MVC设计模式的Web框架,它允许开发者使用注解来减少XML配置。常见的注解有: 1. `@Action`:定义一个Action类,声明其对应的URL和结果页面。 2. `@Result`:指定Action执行后的跳转页面。 3. `@...
在SSH框架的搭建过程中,注释的详细性和层次分明的结构对于初学者来说尤为重要。这可以帮助理解每个步骤的目的和作用,降低学习难度。例如,每个配置文件中的注释应清晰地解释配置项的意义,代码中的注释则应说明...
本主题探讨的是如何利用Java注解在Drools中构建一个业务规则开发框架,以简化规则的编写和管理。 1. **Java注解介绍**:Java注解是一种元数据,提供了一种安全的方法来关联信息和代码(类、方法、变量等)。注解...
在这个"android 反射注解框架"中,注解被用来标记视图组件,以便于后续的自动化处理。 反射是Java提供的一种能够在运行时检查类、接口、字段和方法的能力。在Android开发中,反射常用于在运行时动态地获取和操作...