XML和注解(Annotation)

XML

一、什么是XML

XML(eXtended Markup Language)是一种可扩展标记语言,主要用于数据传输。

二、XML文档的结构

主要组成为:声明,元素,注释,属性,文本等。

 一个格式良好的XML文档:1.XML文档必须有声明,且第一行必须为声明

                                             2.每个XML文档只有一个根元素

                                             3.标记大小写敏感

                                             4.标记必须成对出现

                                             5.空标记关闭</a>

                                             6.属性值要用引号

XML中预定义的符号如:<、"、> ,如果XML文本中出现了这样的数据,可以使用预定义的实体来代替。一般常见的实体有:

 如果有大量特殊字符,可以使用CDATA标签,表示标签中未纯文本数据。

 三、XML的解析技术

XML文档内容,需要读取到内存中,才能被应用程序所识别。对于标记、子
标记,以及标记属性数据的提取,称为XML解析。

XML提供了两种解析技术:DOM解析,是一种基于树结构的API;SAX解析,一种事件驱动的API。

DOM解析的特点:1.给予树状结构的API

                              2.整个XML文档必须在内存中解析和存储

                              3.客户端应用程序就可以随机访问这些对象

                              4.大型文档则会造成内存紧张

SAX解析特点:1.不必把整个文件加载到内存中,占用的内存少

                          2.不能对文档进行随机访问

                          3.SAX是只读的

                          4.文档只会遍历一次

四、XML的优缺点

优点:1、可扩展性强。XML和它的定义文件(DTD)是文本文件,添加或修改都很方
便。
          2、满足开闭原则。XML的配置文件是独立于Java代码之外的,所以如果要修
改配置是不需要改动Java代码的。
缺点:1、解析麻烦,需要第三方类库配合
           2、配置文件过多后,会导致项目管理、维护变得困难。
           3、在做代码的关联配置时麻烦,会让开发人员不断在java代码和XML配置文
件之间来回切换。
           4、查错困难,XML只是文本文件,很多报错只能在运行期间体现,IDE集成
开发环境不能在编译期排查。

注解

一、什么是注解?

注解(Annotation)是一种元数据形式,属于java中的一种数据类型,也是一个标记,也称为描述数据的数据。

二、注解的语法

注解语法支持两种注解:

1、JDK自带的Annotation注解

         @OverRide--用于重写父类的方法,只限方法

         @Derecation--代表已经过时的某个方法或类

         @SuppressWarnings--是抑制编译器的警告

2、开发者自定义的Annotation注解

关键字为@interface,注解本质是一种特殊的接口。在底层实现上,所有定义的注解都会自动继承

java.lang.annotation.Annotation。

元注解--@Target,是专门修饰注解的注解

@Retention--是定义注解的生命力:

其中注解的生命周期有三种:1、仅存在java源文件中
                                               2、被编译到class文件中
                                               3、运行期被加载到Class对象中

@Retention注解使用一个枚举类型RetentionPolicy定义了这三个选择:

1.RetentionPolicy.SOURCE--被限定在Java源文件中,该注解不会参与编译也不会在运行期起任何作用。

 2.RetentionPolicy.CLASS--被编译到Class文件中,编译器可以在编译时根据注解做一些。
处理动作

3. @Retentionolicy.RUNTIME--运行期通过反射得到注解信息。

其中@Retentionolicy.RUNTIME是我们常用的。

注解类型元素说明:1.访问修饰符只能是public,默认也是public

                                 2.元素类型只能是基本数据类型、String、Class、注解类型、枚举、一维数组

                                 3.()里面不能定义参数

                                 4.defult代表默认值,必须和元素类型一致

                                 5.如果没有给定默认值,后面必须设置值

三、 注解Annotation的使用

1.定义注解:

2. 定义学生类,使用Test 注解:

 3.定义TestAnnotation类,利用反射获取注解信息

 四、注解的优缺点

优点:1、JDK自带反射方式解析,不引入第三方库
           2、直接配置在Java源代码中,所以不会引入额外的配置文件,项目管理和维
护变得简单
          3、无论是定义、配置还是解析都是java代码,所以不存在配置时需要在不同
语法格式中切换的问题。
          4、IDE支持度高,排查错误方便,提高开发效率
缺点:1、任何对配置、对定义的修改都需要改动Java代码,然后重新编译,重新打
包应用。
          2、不是通用标准,只能在Java中使用。

注解与注释的区别:注释是存在java源代码当中,用于提高代码的可读性,对于编译和运行没有任何作用,不可以被编译器打包进入class文件;注解是一个标记,可以被编译器打包进入class文件。

XML和注解Annotation的区别:XML是一种可标记语言,大量用于数据传输;注解是jdk1.5中的一种新类型,是在java代码中的特殊标记。

XML与注解在配置这个应用场景中互补性是非常高的。XML的缺点就是注解的优点,反之亦然。这也是目前在JavaEE的各大框架中XML+Annotation配置流的原因。

 

总结

1、XML称为可扩展的标记语言。是一种利用标记和子标记描述数据的文本格式。

2、XML文档由申明、文档类型定义、注释、元素、属性、以及文本等构成。

3、XML的实体可以描述特殊符号和预定义符号,避免解析时的错误。CDATA标记中描述不被解析器解析的文本。

4、满足XML的语法规则的XML文档,称为格式良好的XML。有效的XML,不仅仅要满足XML的语法规则,还要满足DTD和Schema定义的元素规则。

5、XML解析技术有DOM解析、SAX解析两种。其中DOM解析是基于树结构的API,SAX解析是基于事件驱动的API。

6、JAXP是对应用程序隐藏了特定解析器的接口,它提供了访问DOM和SAX实现的抽象层机制。常用的有JDOM和DOM4J。

7、注解Annotation是一种元数据形式,属于java中的一种数据类型。书写的位置被固定为类、方法、变量、参数和包的申明部分。

8、注解Annotation可以用来生成文档,检查代码间依赖关系,帮助编译器作语法检查等。在开发和配置期间,注解信息可以在运行期进行获取。

9、注解语法支持两种注解:JDK自带的Annotation注解,开发者自定义的Annotation注解

10、JDK自带的Annotation注解,常用的有三个@Override(强行检测子类方法是否重写了父类方法)、@Deprecated(标记类或方法是过时的)、@SuppressWarnings(抑制编译器警告。)

11、自定义注解使用关键字@interface。注解本质是一种特殊的接口,在底层实现上,所有定义的注解都会自动继承java.lang.annotation.Annotation。

12、@Target元注解可以限定该注解的应用范围。

13、@Retention注解,是用来限定某个自定义注解的生命力。该注解申RetentionPolicy.RUNTIME时,可以在运行期间通过反射的方式获取信息。

14、XML可以是不同的平台进行数据传输的标准格式。注解只能在java中使用,所以,不能完全替代XML。

15、把与代码关联度不高,并且改动可能性大的配置写在XML文件中。专门配置java代码级别关联度的,以后改动度小的则使用注解Annotation

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值