背景
spring 通过DI的方式实现了控制转移,实现了代码之间耦合度的降低,使得编码变得简洁,但也为此带来了配置上的重量级工作,即便spring3.0引入了基于java的配置类。大量的配置工作,使得程序员的思维会在业务开发和配置编写上切换,并且大量的配置都是固定写法。因此springboot采用了一种约定大于配置的方式,将大量固定常用的配置作成约定,减少了在配置上的编码量。
概述
- springboot 是spring的二次封装,目的是采用约定大于配置的思想,减少配置编码量
- springboot作为spring的二次封装,并不是对spring功能的加强,而是提供更加便利的形式使用spring
- springboot是约定大于配置的实现是靠springboot的两个核心功能:启动依赖和自动装配
启动依赖
mvn对依赖的配置很麻烦。springboot进行基于功能的坐标导入。针对maven工厂pom编写导入一堆坐标的问题,springboot提前把需要的坐标打包好,那我们就只需要引用打包好这个东西的坐标即可。比如什么什么starter。这样大量减少了pom配置的工作量,包括jar包搜寻,版本覆盖,范围传递等。
自动装配
从@SpringBootApplication注解入手,可以发现@SpringBootApplication被@EnableAutoConfiguration标注,而@EnableAutoConfiguration其实又引入了另外一个配置类AutoConfigurationImportSelector。