约定优于配置(convention over configuration),也称作按约定编程,是一种软件
设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。
设计不好的框架通常需要多个配置文件,每一个都有许多设置。这些配置文件为每一个项目提供信息说明从URL到将类映射到数据库表的各种信息。大量包含太多参数的配置文件通常是过度复杂的应用设计的指标(代码坏味道)
例如,在知名的Java
对象关系映射框架
Hibernate的早期版本中,将类及其属性映射到数据库上需要是在XML文件中的描述,其中大部分信息都应能够按照约定得到,如将类映射到同名的
数据库表,将属性分别映射到表上的字段。后续的版本抛弃了
XML配置文件,而是使用这些恰当的约定,对于不符合这些约定的情形,可以使用Java 标注来说明(参见下面提供的JavaBeans规范)。
按照一般的规则,我们不希望造出一个奇怪的java.beans.everything类,其他类需要从该类派生。而是希望在运行时
JavaBeans为一般的对象提供缺省的行为特征,但是允许对象通过继承特定的java.beans.something接口来覆盖缺省的行为特征的一部分。
Java语言中的类、方法、变量、参数和包等都可以被标注。和
Javadoc不同,Java标注可以通过反射获取标注内容。在
编译器生成类文件时,标注可以被嵌入到
字节码中。
Java虚拟机可以保留标注内容,在运行时可以获取到标注内容。 当然它也支持自定义Java标注。