Java --Annotation学习心得体会及笔记

相对于注释这种给程序员看的信息;
注解,就是给程序看的解释性的语言,其作用就相当于配置文件的存在。其存在的意义在于以下几点:

优点:

  • 方便的使程序员看到相关项的关联位置及关联方式等信息。
    缺点:
  • 由于注解是存在于程序之上的,所以每次对注解进行修改后就必须要对源代码进行重新编译才会生效。

注解都长什么样呢?



在使用Eclipse编程的时候我们会经常看到下面几种:

  • @Override——覆盖父类的方法
  • @SupportWarning——抑制警告
  • @Deprecated——过时的
    大致的使用方法,我从网上download下来一幅图片,基本上可以讲述这些常用的注解的作用及使用方式。如下:

    但是光有自带的这些注解可是远远不够滴。我们还需要开发出自定义的实现相关需求的注解。这样才能应付复杂的实际的开发环境。

怎么开发自定义注解?



开发一个自定义注解并不是很复杂,只要按照一定的约束和规范,就可以实现自定义的注解的开发。实现的步骤如下:

  • 使用@interface关键字修饰注解名称
  • 声明符合要求的属性及字段
  • 使用元注解对自定义的注解进行约束和规范(尤其需要使用@Retention,来约束自定义注解的有效的Scope,一般是RetentionPolicy.RUNTIME这样我们才可以在代码编译完成及运行的时候捕捉到注解上面存在的数据信息)。

对于元注解一般有如下的几个:
- @Retention:可以通俗的理解为注解持有的域的范围
- @Target:理解为注解存在的位置
- @Document:加上这个注解的注解就会被收录到Javadoc工具上
- @Inherited:加上这个注解就会使得自定义的注解可以被继承

上面的元注解中最为常用也最为重要的是@Retention和@Target两个圆元注解,同样在网上下载了一张图,可以很好地解释相关项的含义及作用。


使用注解开发出一个数据库连接小助手注解



首先我们需要明白的是数据库连接需要的是驱动,资源定位,用户名和密码四个“属性”,所以我们的自定义注解就需要有这四个属性。如下:

package annotation;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
//这里是最为关键的一点,尤其需要注意注解的存在域的范围
@Retention(RetentionPolicy.RUNTIME)
public @interface JdbcAnnotation {

    String driver();
    String url();
    String username();
    String password();

}

然后我们就可以在程序中引用自定义的注解了。如下:

package annotation;

import java.lang.reflect.Method;
import java.sql.Connection;

import org.junit.Test;

public class JDBCUtils {

    @JdbcAnnotation(driver="com.mysql.jdbc.Driver",url="jdbc:mysql://localhost:3306/myDb",username="root",password="mysql")
    public static Connection getConnection() throws Exception {
        Method method = JDBCUtils.class.getDeclaredMethod("getConnection", null);
        JdbcAnnotation ja = method.getAnnotation(JdbcAnnotation.class);
        String driver = ja.driver();
        String url = ja.url();
        String username = ja.username();
        String password = ja.password();

        System.out.println("数据库连接驱动:"+driver);
        System.out.println("数据库连接资源定位:"+url);
        System.out.println("数据库连接用户名:"+username);
        System.out.println("数据库连接密码:"+password);
        return null;
    }

    @Test
    public void test() throws Exception {
        getConnection();
    }

}

实现的原理是:使用反射技术,获取注解信息,然后解析注解的内容并用相关的变量进行保存,然后就可以被其他的代码得到运用。比如调用实际开发中的数据库连接帮助类的相关方法,实现相关的业务逻辑。在这里仅仅是为了显示可以从注解上获得我们想要的信息,即可。



程序的运行结果如下所示:

数据库连接驱动:com.mysql.jdbc.Driver
数据库连接资源定位:jdbc:mysql://localhost:3306/myDb
数据库连接用户名:root
数据库连接密码:mysql

总结



使用自定义的注解技术,我们可以简化开发过程中来回切换任务,也可以较好的对代码进行相关项的维护,方便的处理业务逻辑。但是不容置疑的是其做完修改后要对源代码进行编译,这在一定程度上限制了注解的使用。

时间: 2024-10-05 09:40:28

Java --Annotation学习心得体会及笔记的相关文章

PHP框架Laravel学习心得体会_php实例

Laravel是一套简洁.优雅的PHP Web开发框架 (PHP Web Framework) .在世界(不含中国)PHP框架的占有率超过40%. 自从接触PHP以来一直使用Yii,感觉Yii实现功能比较简单,是一个很不错的框架.最近由于工作的原因开始研究Laravel5,不得不说我在第一步安装就被坑着了,下面就是我痛苦的学习成果.Laravel对我来说完全是新东西,如果内容有误,烦请留言或QQ我,帮我纠正错误,感激不尽!!! 1.首先安装php,最好5.6以上版本   (1)windows安装

Java Annotation学习笔记

作为一个早期短暂从事过C++开发工作的程序员,我个人认为Annotation可能是Java与C++语言较大的不同点之一,这也是一个前C++程序员由衷认为Java可能.或许.maybe要比C++更好用的原因之一.二十多年来,Java一直保持着更新,不断完善并与时俱进,这可能是其多年来独领编程语言之风骚的重要原因.不多扯,入正题.(编程知识的学习,我一般会遵循这样的一个过程:先熟悉基本概念,再来个小程序跑起来看看,最后理论与程序相结合,加深认识并总结记录.) 1.什么是Annotation Anno

Java设计模式学习心得

整个设计模式贯穿一个原理:面对介面编程,而不是面对实现,(面向物件编程应该改爲面向介面编程).目标原则是:降低耦合,增强灵活性. 一.创建模式 1.设计模式之Factory(工厂方法和抽象工厂) 使用工厂模式就象使用new一样频繁. 2.设计模式之Prototype(原型) 用原型实例指定创建物件的种类,並且通过拷贝这些原型创建新的物件. 3.设计模式之Builder 汽车由车轮 方向盘 发动机很多部件组成,同时,将这些部件组装成汽车也是一件複杂的工作,Builder模式就是将这两种情况分开进行

JAVA的学习体会

JAVA入门的文章很多,但是却没有一篇是先宏观介绍JAVA的,本人一边工作一边学习JAVA大概有半年时间了,由于工作的性质很编程有写不同,学了这么久还是没有什么成绩.可能也是由于没有什么好的老师,走了不少弯路,难得有空,就把自己的学习心得总结一下,希望别的初学者能走一下"捷径".学习之前最好先找个好的编辑器,我选用的是JBUILDER. JAVA总的来说和C++..NET.DELPHI等语言是同一祖先生出来,所以熟悉这类编程的人学起来特别容易,它们都是面向对象化编程语言. 学习任何语言

学习Xhtml+CSS2的一些心得体会_CSS/HTML

自从W3C搞了一个Xhtml1.0的标准之后,很多网站都开始用之将站点重构,像yahoo,163,CSDN等,近来一段时间Xhtml+CSS2的热潮更是一浪高过一浪,所以偶也开始学起了,慢慢的就爱上他们了,现在谈一谈最近一段时间来的学习体会.    为什么要学Xhtml+CSS2   首先,规范的代码能在各种浏览器中顺利显示.   一些不规范代码的网页在IE下能正常显示的,在Firefox和Opera上可能就无法正常显示.虽然现在浏览器的主流是IE以及以IE为内核的各种浏览器,但不排除Firef

浅谈学习网络推广一个月的心得体会

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 "网络推广"这个时代新词对于我们80后来说并不陌生,但是具体的定义对于我个人来说还是一片茫然.这次难得公司有培训,我是带着一份求知加好奇的心情来学习的.虽然就短短的一个月,让我感受良多.在这里和大家晒晒我的收获,同时也希望有兴趣的同伴也加入网络推广大军来. 学习这门技术,掌握网络基础知识是首要的.像京东.淘宝这些知名网站对

java基础学习笔记之反射_java

反射 反射:将类的属性和方法映射成相应的类. 反射基本使用 获取Class类的三种方法: 类名.class 对象名.getClass() Class.forName("要加载的类名") 根据API写就行了,大致流程就是: 用上述三种方式之一获取特定类的Class类,即该类对应的字节码 调用Class对象的getConstructor(Class<?>... parameterTypes)获取构造方法对象 调用是构造方法类Constructor的newInstance(Obj

学习教程:Java Annotation 高级应用

高级|教程 前言: 前不久在matrix上先后发表了<java annotation 入门>.<java annotation 手册>两篇文章,比较全面的对java annotation的语法.原理.使用三方面进行了阐述.由于<入门>中的简单例程虽然简单明了的说明了annotation用法,但给大家的感觉可能是意犹未见,所以在此行文<java annotation高级应用>,具体实例化解释annotation和annotation processing to

Myeclipse连接mysql数据库心得体会_Mysql

我是给同学做一个J2EE 关于struct+hibernate结构的课设,数据库以前用的是Oracle,数据库丢失,不想装Oracle,那玩意装在本子上太刀了,卸不掉恶心...就换个mysql给他改改,网上的一些帖子,太老了,版本以及网址都是翻新没有翻内容,头大,不给力啊,还是不能全靠网络,毕竟有些东西要相信自己--想到了自己试试.思考才是王道. 以上都是废话.开始: Myeclipse连接mysql数据库之前先搞定这几项: 步骤: 1. Install JDK,Tomcat,myeclipse