SpringBoot学习之路---简单看看自动配置原理的那点事儿

之前介绍到了,SpringBoot这个东西有一个强大的点在于它可以自动配置一些bean对象,从而大大简化你的配置文件(小声bb,可能都不需要它了)


俗话说只有光头才能变强


上文介绍到了,使用Spring Initializr并且选择web模块可以很方便的搭建一个web项目。

如果按照以往我们是怎么做的呢

  1. 创建好maven工程并导入相关的SpringMVC坐标
  2. 创建一个SpringMVC的配置文件
  3. 在配置文件中开启注解扫描,并指定要扫描的包
  4. 在配置文件中配置可能需要的组件(视图解析器、拦截器、异常处理器等等)
  5. 在web.xml中配置DispactherServlet,可能还需要CharacterEncoding

这些往往都是我们来做的,有时候,我们只想写一个helloworld,但是大部分时间都没用在写业务上,倒是用在了配置文件上了。而SpringBoot创建完项目后,它会帮我们自动配置了我们所需要的组件,所以我们之前创建项目后,都没配置文件却可以跑起来!


它的自动装备是怎么回事呢?


我们在SpringBoot的项目会发现一个主类,上面有一个@SpringBootApplication注解,用这个注解就可以告诉电脑这是咱们的SpringBoot主类了,有点神奇,但我们就是要点进去扒了它的皮。
SpringBoot学习之路---简单看看自动配置原理的那点事儿_第1张图片
发现它就是个组合注解,有几个注解比较重要,需要我们去知道的:

  1. @ComponentScan
    顾名思义,就是扫描注解,默认扫描主类所在包中的注解

  2. @SpringBootConfiguration
    再点进去,发现里面@Configuration注解,原来就是指明这是个配置类

  3. @EnableAutoConfiguration
    开启自动配置,这个就比较重要了,我们点进去
    在这里插入图片描述
    还是一个组合注解,里面有两个重要的注解

    1. @AutoConfigurationPackage
      自动配置包,它和@ComponentScan的区别是扫描的对象不一样

    2. @Import
      A:报告,这个不就是Spring底层的注解吗?
      B:没错,它就是给IOC导入了一些组件
      A:这个AutoConfigurationImportSelector类吗?
      B:yep!这个类有个作用,它最终经过山水十八弯后,会返回113个配置类,然后我们会默认加载这些配置类 (有兴趣的可以自行研究了,里面就是扫描相关jar包下的jar,然后封装成一个properties,并且把全部的key返回)
      这样自我们的IOC容器中就有了这些组件了

其实SpringBoot帮我们完成了自动配置的事情,如果我们要换里面的某些组件,我们可以自行去配置,这个以后接着记录。

那那些导入的组件有很多版本,SpringBoot是怎么帮我们选择呢?

别当心,下次在去记录它.

你可能感兴趣的:(SpringBoot)