一、注解概述

      1、学习注解能够读懂别人的代码,特别是框架相关的代码
      2、让自己的编程更加简洁,代码更加清晰
      3、让别人高看一眼,会使用自定义注解来解决问题
      4、概念:Java提供了一种原程序中的元素关联任何信息的任何元数据的途径和方法
 
二、Java中的常见注解   Annotation
      1、JDK自带注解
            @Override
            @Deprecated   表示方法已经过时了,在方法上加一个中划线,
            @Suppvisewarnings  表示忽略警告
      2、常见第三方注解
           Spring:@Autowired
                   @Service
                   @Repository
           Mysbatis: @InsertProvider
                     @updateProvider
                     @Options
 
三、注解分类
      1、按运行机制分:
            源码注解: 注解只在源码中存在,编译成.class文件就不存在了。
            编译时注解:注解在源码和.class文件中都存在
            运行时注解:在运行阶段还起作用,甚至会影响运行逻辑的注解
       2、按来源分:
             JDK的注解
             第三方的注解
             自定义的注解
       3、元注解:注解的注解
四、自定义注解
       1、自定义注解的语法要求
                        
          成员类型是受限的,包括原始数据类型,String,Class,Annotation,Enumeration
          如果注解只有一个成员,则成员名必须取名为value(),在使用时可以胡磊成员名和赋值   号(=)
          注解可以没有成员,没有程员的注解称为标识注解
       2、元注解
             @Target 注解的作用域:构造方法、域、局部变量生命、方法、包、参数、类、接口
             @Retention  注解的生命周期:SOURCE、CLASS、RUNTIME
             @Inherited  允许子注解继承它
             @Documented  生成JavaDoc时包含注解的信息
       3、使用自定义注解
             使用注解的语法:
             @<注解名>(<成员名1>=<成员值1>,<>=<>,……)      
       4、解析注解
            通过反射获取类、函数或成员上的运行时注解信息,从而实现动态控制程序运行的逻辑      
  1. //1.使用类加载器加载类
  2. Class c =Class.forName("要解析的类的全名");
  3. //2.找到类上面的注解
  4. boolean isExist = c.isAnnotationPresent(xxx.class);//xxx表示你要解析的注解的类名
  5. if(isExist){
  6. //3.拿到注解实例
  7. xxx d =(xxx)c.getAnnotation(xxx.class);
  8. System.out.println(d.value());
  9. }
  10. //4.找到方法上的注解
  11. Method[] ms = c.getMethod();
  12. for(Method m:ms){
  13. boolean isMExist = m.isAnnotationPresent(xxx.class);
  14. if(isMExist){
  15. xxx d =(xxx)m.getAnnotation(xxx.class);
  16. System.out.println(d.value());
  17. }
  18. //另一种解析方法
  19. for(Method m:ms){
  20. Annotation[] as = m.getAnnotation();
  21. for(Annotation a: as){
  22. if(a instanceOf xxx);
  23. xxx d =(xxx)a;
  24. System.out.println(d.value());
  25. }
  26. }
  27. }
 
五、在实际项目中使用自定义注解来解决问题
 
      如自己开发一个Hibernate     
 

全面解析java注解的更多相关文章

  1. 框架基础——全面解析Java注解

    为什么学习注解? 学习注解有什么好处? 学完能做什么? 答:1. 能够读懂别人写的代码,特别是框架相关的代码: 2. 让编程更加简洁,代码更加清晰: 3. 让别人高看一眼. spring.mybati ...

  2. 【iMooc】全面解析java注解

    在慕课上学习了一个关于java注解的课程,下面是笔记以及一些源码. Annotation——注解 1.JDK中的注解 JDK中包括下面三种注解: @Override:标记注解(marker annot ...

  3. 基础篇:深入解析JAVA注解机制

    目录 java实现注解的底层原理和概念 五种元注解详解 使用动态代理机制处理注解 spring.AOP和注解机制 (题外)@FunctionalInterface原理介绍 欢迎指正文中错误 关注公众号 ...

  4. 分享知识-快乐自己:全面解析 java注解实战指南

    请你在看这篇文章时,不要感到枯燥,从头到尾一行行看,代码一行行读,你一定会有所收获的. 问: 为什么学习注解? 学习注解有什么好处? 学完能做什么? 答: 1):能够读懂别人的代码,特别是框架相关的代 ...

  5. Java注解入门

    注解的分类   按运行机制分:   源码注解:只在源码中存在,编译后不存在 编译时注解:源码和编译后的class文件都存在(如@Override,@Deprecated,@SuppressWarnin ...

  6. Java注解教程:自定义注解示例,利用反射进行解析

    Java注解能够提供代码的相关信息,同时对于所注解的代码结构又没有直接影响.在这篇教程中,我们将学习Java注解,如何编写自定义注解,注解的使用,以及如何使用反射解析注解. 注解是Java 1.5引入 ...

  7. Java注解全面解析(转)

    1.基本语法 注解定义看起来很像接口的定义.事实上,与其他任何接口一样,注解也将会编译成class文件. @Target(ElementType.Method) @Retention(Retentio ...

  8. Java注解解析-搭建自己的注解处理器(CLASS注解使用篇)

    该文章是继Java注解解析-基础+运行时注解(RUNTIME)之后,使用注解处理器处理CLASS注解的文章.通过完整的Demo例子介绍整个注解处理器的搭建流程以及注意事项,你将知道如何去搭建自己的注解 ...

  9. java注解(Annotation)解析

    注解(Annotation)在java中应用非常广泛.它既能帮助我们在编码中减少错误,(比如最常见的Override注解),还可以帮助我们减少各种xml文件的配置,比如定义AOP切面用@AspectJ ...

随机推荐

  1. mysql 幻读

    幻读(Phantom Read) 是指当用户读取某一范围的数据行时,B事务在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影”行.InnoDB和Falcon存储引擎通 过多版本并发 ...

  2. C#中判断一个网址是否可以打开

    public static void GetPage(String url) { try { // Creates an HttpWebRequest for the specified URL. H ...

  3. 让ie6支持fixed最简单和实用的方法

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  4. UVa 1645 (递推) Count

    题意: 有多少个n个节点的有根树,满足每层节点的子节点个数相同,输出该数目除以1e9+7的余数. 分析: 这种题目就属于那种,看起来很高冷,读完题更高冷.想了N久想不出来,一搜题解,卧槽,这么sb的题 ...

  5. UVa 1363 (数论 数列求和) Joseph's Problem

    题意: 给出n, k,求 分析: 假设,则k mod (i+1) = k - (i+1)*p = k - i*p - p = k mod i - p 则对于某个区间,i∈[l, r],k/i的整数部分 ...

  6. [POJ 1365] Prime Land

    Prime Land Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3211   Accepted: 1473 Descri ...

  7. apache开源项目--PDFBox

    PDFBox是Java实现的PDF文档协作类库,提供PDF文档的创建.处理以及文档内容提取功能,也包含了一些命令行实用工具. 主要特性包括: 从PDF提取文本 合并PDF文档 PDF 文档加密与解密 ...

  8. 自适应的CSS代码片段(常用)

    /* Smartphones (portrait and landscape) ----------- */ @media only screen and (min-device-width : 32 ...

  9. HTML DOM 教程Part1

    2015-05-08 摘自W3C School HTML DOM HTML DOM 定义了访问和操作HTML文档的标准方法.HTML DOM 把 HTML 文档呈现为带有元素.属性和文本的树结构(节点 ...

  10. 动态代理CGlib实例

    1.委托类: package 动态代理2; //需要对这个类进行增强 public class UserService { public void create() { System.out.prin ...