什么是注解
注解 是 JDK 1.5 引入的功能。可以看作是对 一个 类/方法 的一个扩展的模版,每个 类/方法 按照注解类中的规则,来为 类/方法 注解不同的参数,在用到的地方可以得到不同的 类/方法 中注解的各种参数与值。
为什么要用注解
在 JDK 1.5 之前,Java 还没引入注解,这个时候如果我们要在 Spring 中声明一个 Bean,我们只能通过 XML 配置的方式。
1 | public class DemoService{ } |
1 | <bean id="demoService" class="com.chenshuyi.DemoService"/> |
但当有了注解,我们就可以不必写一个 XML 配置文件,可以直接在 DemoService 类上完成 Bean 的声明工作。
1 |
|
在表面上看来,我们通过注解的方式减少了一个XML配置文件,减少了开发代码量。但这真的是我们用注解而不用 XML 配置文件的原因吗?
在回答这个问题之前,我们再来回顾一下上面两种配置方式的特点:
- 对于注解的方式。我们会发现它和代码结合得很紧密,所以注解比较适合做一些与代码相关度高的操作,例如将Bean对应的服务暴露出去。
- 对于XML配置方式。我们会发现它将配置和代码隔离开来了所以XML配置更适合做一些全局的、与具体代码无关的操作,例如全局的配置等。
我相信很多人此前对于注解的认识就是方便开发。但事实上使用注解还是XML的判断标准应该是:该配置与代码的相关度。如果代码与配置相关度高,那么使用注解配置,否则使用XML配置。
注解和配置文件的比较
优点:
- 配置文件
- 遵循OCP开发原则,修改配置文件即可进行功能扩展(OCP 开闭原则 Open Closed Principle)
- 集中管理对象和对象之间的组合关系,易于阅读
- 注解
- 开发速度快
- 编译期间容易发现错误的出处
缺点:
- 配置文件
- 开发速度相对较慢
- 编译时很难检查出错误,运行中的错误很难定位,调试难度较大
- 注解
- 管理分散,基本每个类上都有
- 扩展功能时,没有遵循OCP开发原则