微服务从小白到专家:Spring Cloud和Kubernetes实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2 Spring Boot的设计理念

Spring Boot的设计者在设计之初就一直奉行一个原则:约定大于配置(Convention Over Configuration),但作为Spring Boot的用户,应当如何理解这项原则?究其根源,Spring Boot的开发者在研究了大量Spring应用之后,得出一个惊人的结论:大部分Spring项目的配置都是非常相似的,利用这种相似性,Spring Boot的设计者从中总结出规律并将其定义为Spring应用的默认配置,将其固化在Spring Boot框架中,再利用自动配置(Auto Configuration)技术将默认配置注入应用。

这种设计理念,对于刚开始接触Spring Boot的开发者会略有不适,更有甚者,在第一次运行Spring Boot项目时,完全无法理解其工作原理。可是一旦明白了“约定大于配置”的设计理念,就会理解其工作原理。

我们以Hibernate为例,如果某个Spring Boot应用采用Hibernate框架作为数据访问层,那么在项目启动阶段,Spring Boot框架一旦扫描到该项目的classpath中包含Hibernate相关的类,就会自动将Hibernate相关的配置加载到Spring容器中,进而应用可以使用Hibernate来操作数据库。作为对比,在传统的Spring项目中,无论是使用XML还是以Bean的形式定义,Hibernate都必须逐一进行显式配置,否则该项目是无法使用Hibernate的(准确来说是无法启动的)。

再举一个简单的例子,如果我们要在传统的Hibernate配置中配置数据库连接池,那么我们必须在xml文件中显式定义连接池,而Spring Boot应用会为Hibernate自动配置一个HikariCP连接池(从Spring Boot 2.*之后)。

尽管Spring Boot大大减少了项目的配置工作,但作为开发者不要轻易被表象所迷惑,了解Spring Boot背后的工作原理才是正确的学习方向。