如何理解 SpringBoot 中的约定优于配置

第一时间获取技术干货和业界资讯!

如何理解 SpringBoot 中的约定优于配置

大约是两年前,有同事给我说到,SpringBoot 中约定优于配置是什么意思?是不需要配置吗?不需要配置问什么还有配置文件?

如何理解 SpringBoot 中的约定优于配置
关于这个问题,我相信也困扰着不少人,而面试中也有不少人会被问到。今天抽个时间,我们一起来讨论讨论,如何理解这句话!

约定优于配置,也有很多人解读为:约定大于配置,约定好于配置,习惯大于配置等。但它们都表明了一个意思,并不是说零配置。或者说零配置并不是完全没有配置,而是通过约定来减少配置。

约定优于配置是一个简单的概念。系统,类库,框架应该假定合理的默认值,而非要求提供不必要的配置。在大部分情况下,你会发现使用框架提供的默认值会让你的项目开发起来效率更快。

约定优于配置。并不是一个新套路,新技术,新思想。而是原来就一直存在的,SpringBoot 只不过是把它放大了,并真正的做到了约定优于配置。

比如,我们在日常开发过程中。你有一个 xttblog 表,那么可能就对应的有一个 Xttblog 的实体类。这其实就是一种约定。

在 SpringBoot 中,当我们导入一个 spring-boot-starter-web 后。就会自动的帮我们导入 Spring MVC 的相关依赖(包括 Json 支持的 Jackson 和数据校验的 Hibernate Validator)和一个内置的 Tomcat 容器,这使得在开发阶段可以直接通过 main 方法或是 JAR 包独立运行一个 WEB 项目。

SpringBoot 约定,当你导入 spring-boot-starter-web 后,就约定了你是一个 web 开发环境。当你是一个 web 环境,就约定了你会使用 SpringMVC(Struts2 之类的就拜拜了,因为不是亲生的,而且确实没 SpringMVC 使用率高)。至于其它的也约定你会需要,都给你默认导入进来。当你觉得不合适的时候,可以用更少的改动,满足你的需要。

Spring 在推动“约定优于配置”这一设计理念,从 Spring 的注解版本就已经开始了。引入注解就是为了减少一些默认配置,引入注解也就代表着简化配置的开始,官方说基于 spring 的基础就是这个事实。

SpringBoot 约定以 starter 的形式减少依赖,于是相继推出了不少常用的 starter。

约定优于配置。在我们的实际生活中也有体现。比如,我们约定靠右行驶,我们约定从小右手拿筷子等。正是 SprigBoot 的小“约定”,大作用,才让越来越多的人爱上它。

猜你喜欢

转载自blog.51cto.com/15127565/2666198