之前介绍到了,SpringBoot这个东西有一个强大的点在于它可以自动配置一些bean对象,从而大大简化你的配置文件(小声bb,可能都不需要它了)
俗话说只有光头才能变强
上文介绍到了,使用Spring Initializr
并且选择web模块可以很方便的搭建一个web项目。
如果按照以往我们是怎么做的呢
- 创建好maven工程并导入相关的SpringMVC坐标
- 创建一个SpringMVC的配置文件
- 在配置文件中开启注解扫描,并指定要扫描的包
- 在配置文件中配置可能需要的组件(视图解析器、拦截器、异常处理器等等)
- 在web.xml中配置
DispactherServlet
,可能还需要CharacterEncoding
这些往往都是我们来做的,有时候,我们只想写一个helloworld,但是大部分时间都没用在写业务上,倒是用在了配置文件上了。而SpringBoot
创建完项目后,它会帮我们自动配置了我们所需要的组件,所以我们之前创建项目后,都没配置文件却可以跑起来!
它的自动装备是怎么回事呢?
我们在SpringBoot的项目会发现一个主类,上面有一个@SpringBootApplication
注解,用这个注解就可以告诉电脑这是咱们的SpringBoot主类了,有点神奇,但我们就是要点进去扒了它的皮。
发现它就是个组合注解,有几个注解比较重要,需要我们去知道的:
-
@ComponentScan
顾名思义,就是扫描注解,默认扫描主类所在包中的注解 -
@SpringBootConfiguration
再点进去,发现里面@Configuration
注解,原来就是指明这是个配置类 -
@EnableAutoConfiguration
开启自动配置,这个就比较重要了,我们点进去
还是一个组合注解,里面有两个重要的注解-
@AutoConfigurationPackage
自动配置包,它和@ComponentScan
的区别是扫描的对象不一样 -
@Import
A:报告,这个不就是Spring底层的注解吗?
B:没错,它就是给IOC导入了一些组件
A:这个AutoConfigurationImportSelector
类吗?
B:yep!这个类有个作用,它最终经过山水十八弯后,会返回113个配置类,然后我们会默认加载这些配置类 (有兴趣的可以自行研究了,里面就是扫描相关jar包下的jar,然后封装成一个properties,并且把全部的key返回)
这样自我们的IOC容器中就有了这些组件了
-
其实SpringBoot帮我们完成了自动配置的事情,如果我们要换里面的某些组件,我们可以自行去配置,这个以后接着记录。
那那些导入的组件有很多版本,SpringBoot是怎么帮我们选择呢?
别当心,下次在去记录它.