springboot是在spring基础上的一次跃迁,是约定先于配置
的完美实践。
最近在学习springboot相关内容,看到自动配置这个知识点时,着实有些困惑,网上大多博客多介绍何为springboot自动配置及其实现原理,读完依然还有些云遮雾绕。
鉴于现今我浅薄的spring知识,并不深刻知道springboot自动配置相较于spring的原始配置之间究竟有何不同,遂遍历多篇相关博客并请教大佬,才堪堪在逻辑上对二者之区别略有知晓。
我想从spring之XML配置到spring之注解配置后至springboot自动配置这个逐渐演进的过程来说明此中缘由,或许有助于各位理解。
此阶段的spring若要将第三方jar包导入至spring的IOC容器,需要如下几个步骤:
maven导入第三方jar包依赖;
在spring的默认配置文件(XML文件)中创建bean标签,表明需要导入的服务类;
在第三方jar所属配置文件(XML文件)中对这个依赖进行若干参数配置;
这样,当启动spring应用时,此jar包相关类便会被spring收集并注册到spring的IOC容器之中。
然而,这样操作的结果是若引入jar包太多,则spring的默认配置文件中的bean标签将会数不胜数,终至配置文件太过臃肿。因此,基于javaConfig的注解配置方式应运而生。
为了不使spring配置文件体量太大,javaConfig定义多个注解来完成对第三方jar包的引入。
maven导入第三方jar包依赖;
舍弃传统的基于xml配置文件的配置方式,使用@Configuration和@Bean两个注解在代码中创建服务配置类;
jar包若干参数便可在这个服务配置类中定义,也可在jar包所属配置文件中配置;
这样的操作方式在大型项目中使xml配置文件的个数和大小锐减,项目的整个工程结构更加清晰,便于开发和维护。
然而,喜欢化繁为简的软件工程师们就这样满足了吗???
当然不会!!!
为了践行约定先于配置
的工程思想,springboot横空出世。springboot的出现,再一次大大简化了启动一个web项目需要的步骤。我们不需要再自己启动一个servlet容器,
也不需要传统xml配置文件的繁琐配置,只需要简单的将所需jar包引入到pom文件,那么一个简单的web项目就可以启动。当然,我们也可以在springboot的application.yml文件中进行个性化配置。
springboot的自动配置就简化了jar包引入,我们不需要再自己写服务配置类,@EnableAutoConfiguration注解已经帮助我们将依赖bean注入到IOC容器,我们只需要在代码中使用@Autowired注解
就可以轻松获取。springboot自动配置提供了一系列约定配置,当我们想进行个性化定制时,这些约定配置便被覆盖。
如果想深入了解springboot自动配置的实现机制,可参考其它博客。
本文是在参考其它博文的基础上通过逻辑整理得来,若有错误之处,请不吝赐教。
原文:https://www.cnblogs.com/codelocking/p/10719710.html