开发者社区> javaedge> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

什么是约定大于配置?

简介: 约定大于配置,convention over configuration,也称按约定编程,一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。 本质是说,开发人员仅需规定应用中不符约定的部分。例如,如果模型中有个名为Sale的类,那么数据库中对应的表就会默认命名为sales。只有在偏离这一约定时,例如将该表命名为"products_sold",才需写有关这个名字的配置。 如果所用工具的约定与期待相符,便可省去配置;反之,可以配置来达到所期待的方式。
+关注继续查看

约定大于配置,convention over configuration,也称按约定编程,一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。


本质是说,开发人员仅需规定应用中不符约定的部分。例如,如果模型中有个名为Sale的类,那么数据库中对应的表就会默认命名为sales。只有在偏离这一约定时,例如将该表命名为"products_sold",才需写有关这个名字的配置。


如果所用工具的约定与期待相符,便可省去配置;反之,可以配置来达到所期待的方式。

动机

设计不好的框架通常需要多个配置文件,每一个都有许多设置。这些配置文件为每一个项目提供像是URL,或是将类映射到数据库表的各种信息。大量包含太多参数的配置文件通常是过度复杂的应用设计(代码坏味道)。


例如,在知名的Java对象关系映射框架Hibernate的早期版本中,将类及其属性映射到数据库上需要是在XML文件中的描述,其中大部分信息都应能够按照约定得到,如将类映射到同名的数据库表,将属性分别映射到表上的字段。后续的版本抛弃了XML配置文件,而是使用这些恰当的约定,对于不符合这些约定的情形,可以使用Java 标注来说明(参见下面提供的JavaBeans规范)。

使用

许多新的框架使用了约定优于配置的方法,包括:Spring,Ruby on Rails,Maven,ASP.NET MVC。

这是一个古老的概念,甚至在Java类库中也可以找出这一概念的踪迹。例如,JavaBean规范非常多的依赖这一概念。

下面摘录JavaBeans 1.1版规范的一段:

一般来说,我们不希望造出一个硕大无比的java.beans.everything类用来派生其他类,而是希望JavaBeans运行时为一般的对象提供缺省的行为特征,但是允许对象通过继承特定的java.beans.something接口来覆盖缺省的行为特征的一部分


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
什么是全文检索
全文检索技术被广泛的应用于搜索引擎,查询检索等领域。我们在网络上的大部分搜索服务都用到了全文检索技术。 对于数据量大、数据结构不固定的数据可采用全文检索方式搜索,比如百度、Google等搜索引擎、论坛站内搜索、电商网站站内搜索等。
33 0
Netty入门 -- 什么是Netty?
Netty入门 -- 什么是Netty?
34 0
什么是寄存器
Java编译器输出的指令流,基本上是一种基于栈的指令集架构,而与之相对的另外一套常用的指令集架构是基于寄存器的指令集。早期的android,即android4.4之前使用的JVM是Dalvik VM,就是基于寄存器架构的。
58 0
什么是灰度发布,灰度测试。
灰度发布,又名金丝雀发布,或者灰度测试,是指在黑与白之间能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。
122 0
什么是AOP
什么是AOP AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象
2437 0
x3d
什么是人格
一直懵懵懂懂对人格这个词比较感兴趣,还读过所谓“九型人格”的书籍,但对人格的定义却不甚了解。但最近看了豆瓣上关于多重人格的一篇文章:https://www.douban.com/note/582954643/ 后,人格这个词就一直在脑海里出现,并且深深的为自己的人格担心起来,数一数,好像也有一二三四五六七八中人格了啊。
723 0
什么是注解
注解也叫元数据,例如我们常见的@Override和@Deprecated,注解是JDK1.5版本开始引入的一个特性,用于对代码进行说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解。
832 0
什么是供应链
引用:http://www.esmchina.com/ART_8800123211_1100_2404_3100_0_329c53dc-02.HTM 什么是供应链 供应链,由供应商、制造商、仓库、配送中心和渠道商等构成的物流网络。
860 0
+关注
javaedge
关注公众号:JavaEdge,后台回复面试,领取更多大厂求职资源。曾在百度、携程、华为等大厂搬砖,专注Java生态各种中间件原理、框架源码、微服务、中台等架构设计及落地实战,只生产硬核干货!
2303
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载