`
come_for_dream
  • 浏览: 120740 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

框架设计之注解

阅读更多

       之前实习参与一个创新性的框架的开发工作,之前就有要开发一个框架的想法但是却一直没有付诸行动,这个项目也暴漏出了自己很多的不足,其中注解就是我一个很大的盲点,记得第一次使用注解是在使用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界面).zip

    python大作业基于pyqt5框架设计的音乐播放器项目源码+超详细注释(带GUI界面).zippython大作业基于pyqt5框架设计的音乐播放器项目源码+超详细注释(带GUI界面).zippython大作业基于pyqt5框架设计的音乐播放器项目...

    基于Java注解的Drools业务规则开发框架设计实现.pdf

    Java注解是一种在Java语言中用来为代码元素(如类、方法、变量等)提供元...通过实际应用和验证,本框架设计有助于解决传统Drools开发中遇到的问题,如无法语法检查、无法调试等,同时保证了规则的可维护性和可扩展性。

    完全基于注解方式SSH框架项目设计.pdf

    在文档提供的信息中,作者雷筱珍通过“完全基于注解方式SSH框架项目设计”这篇文章,向读者详细阐述了SSH框架项目设计中注解应用的具体方法。文章中提到的参考文献,如《Struts, Hibernate, Spring集成开发宝典》和...

    ssh 框架注解示例

    Struts2是一个基于MVC设计模式的Web应用框架,它通过Action类处理用户请求。在Struts2中,注解可以替代XML配置文件来定义Action类和方法。例如,`@Action`注解用于标记一个类为Action,而`@Result`注解则用来定义...

    ssh web 框架 非注解的

    配合Bootstrap,一个流行的前端框架,可以快速创建响应式和移动优先的网页设计。Bootstrap提供了预定义的CSS样式、JavaScript插件和HTML结构,让开发者能够快速构建美观的用户界面。 在实际项目中,"zxjyssh"可能...

    ssh框架构建 hibernate注解 spring注解

    本教程将深入探讨如何使用注解来构建SSH框架,以实现更简洁、高效的应用程序开发。 **Struts2** 是MVC设计模式的一个实现,主要负责处理HTTP请求并分发到相应的业务逻辑。在传统Struts2中,我们通常会通过XML配置...

    Struts2框架及注释和用法

    Struts2是一个强大的Java web开发框架,它基于MVC(Model-View-Controller)设计模式,为构建可维护性高、结构清晰的Web应用程序提供了一种解决方案。这个框架旨在简化开发过程,提高代码的可测试性和可重用性。下面...

    基于Java的简单javabean注解验证框架设计源码

    本项目是基于Java的简单javabean注解验证框架设计源码,包含25个文件,其中包括20个Java源文件、2个XML文件、1个gitignore文件、1个Markdown文档和1个Properties文件。该项目是一个简单的javabean注解验证框架,通过...

    JAVA设计模式--程序设计--反射--注解--泛型

    反射的应用场景广泛,如插件系统、框架设计、单元测试等。 注解(Annotation)是Java中的元数据,它为编译器和JVM提供了有关代码的附加信息。注解可以用于代码的编译时检查、运行时处理、文档生成等。常见的注解有@...

    SSH2框架实例(全注解)

    通过这些脚本,你可以了解如何设计数据库表结构以适应SSH2框架的需求,以及如何利用Hibernate的注解进行数据库表和实体类的映射。 总的来说,SSH2框架全注解实例的学习,可以帮助初学者快速掌握Java Web开发的核心...

    注解三表ssh框架

    2. **Struts2框架**:Struts2是基于MVC设计模式的Web应用框架,它极大地简化了Java Web开发。在注解模式下,可以使用`@Action`注解标识一个类或方法为Action,`@Result`定义结果页面,`@Param`处理请求参数。这样,...

    Android App框架设计 基类BaseActivity

    一个BaseActivity基类 封装了不同网络访问状态下界面切换 toolbar标准 以及DataBinding实现无需findViewbyid 和Butterknife超长注解成员变量 Activity管理类

    java或Java框架中常用的注解及其作用详解_资料.docx

    Java注解,也称为标注,是Java开发中的一个重要特性,自JDK 5.0引入。它们提供了一种元数据的方式,允许程序员在代码中添加信息...在实际项目中,结合Java注解和框架如Spring,可以实现松耦合和高度模块化的架构设计。

    SSH框架非注解版所需要的jar包

    Struts框架作为MVC设计模式的实现,主要处理HTTP请求并控制应用流程。在非注解版本中,主要依赖`struts2-core.jar`、`struts2-convention-plugin.jar`等,这些库负责处理Action的映射、视图的跳转以及结果的处理。 ...

    基于MVC模式的轻量级Z-PHP框架设计源码

    本项目是基于MVC模式的轻量级Z-PHP框架设计源码,主要使用PHP进行开发。项目共包含25个文件,其中PHP源代码文件21个,Git忽略配置文件gitignore 1个,项目许可证文件LICENSE 1个,Markdown文档文件md 1个,以及TTF...

    SSH框架模板-注解类模板

    **Struts2** 是一个基于MVC设计模式的Web应用框架,用于替代Java Servlet API来构建动态网站。在Struts2中,使用注解可以避免传统的XML配置,使得控制器(Action)的定义更加简洁。例如,`@Action` 注解用于标识一个...

    三大框架的注解演示案例

    Struts2是一个基于MVC设计模式的Web框架,它允许开发者使用注解来减少XML配置。常见的注解有: 1. `@Action`:定义一个Action类,声明其对应的URL和结果页面。 2. `@Result`:指定Action执行后的跳转页面。 3. `@...

    SSH框架搭建(注释详细,层次分明)

    在SSH框架的搭建过程中,注释的详细性和层次分明的结构对于初学者来说尤为重要。这可以帮助理解每个步骤的目的和作用,降低学习难度。例如,每个配置文件中的注释应清晰地解释配置项的意义,代码中的注释则应说明...

    基于Java注解的Drools业务规则开发框架设计实现.zip

    本主题探讨的是如何利用Java注解在Drools中构建一个业务规则开发框架,以简化规则的编写和管理。 1. **Java注解介绍**:Java注解是一种元数据,提供了一种安全的方法来关联信息和代码(类、方法、变量等)。注解...

    android 反射注解框架

    在这个"android 反射注解框架"中,注解被用来标记视图组件,以便于后续的自动化处理。 反射是Java提供的一种能够在运行时检查类、接口、字段和方法的能力。在Android开发中,反射常用于在运行时动态地获取和操作...

Global site tag (gtag.js) - Google Analytics