使用 SpringBoot 之后,让一个整合了 SpringMVC 的 WEB 工程开发变得非常简单,那些繁杂的配置都消失不见了,这是如何做到的?
查看 main 方法的启动类
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiATN381dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5yM0gTOzYDM4UWM1MWN0MGOyYzX5ATM0ATM0IzLcVDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
注解:
@SpringBootApplication
,run 方法:
SpringApplication.run()
@SpringBootApplication
查看@SpringBootApplication源码,如下图所示:
在源码当中有3个比较重点的注解, 我上图已经标记出来了
@SpringBootConfiguration
查看
@SpringBootConfiguration
源码
在这个注解上面,又有一个
@Configuration
注解,这个注解的作用就是声明当前类是一个
配置类
,然后 Spring 会自动扫描到添加了
@Configuration
的类,读取其中的配置信息,而
@SpringBootConfiguration
是用来声明当前类是
SpringBoot
应用的配置类,项目中只能有一个。所以一般我们无需自己添加。
@EnableAutoConfiguration
开启自动配置,告诉 SpringBoot 基于所添加的依赖,去
猜测
你想要如何配置 Spring。比如我们引入了
spring-boot-starter-web
,而这个启动器中帮我们添加了 tomcat、SpringMVC 的依赖, 此时自动配置就知道你是要开发一个
web
应用,所以就帮你完成了 web 及 SpringMVC 的默认配置了!SpringBoot 内部对大量的第三方库或 Spring 内部库进行了默认配置,这些配置是否生效,取决于我们是否引入了对应库所需的依赖,如果有那么默认配置就会生效,我们使用 SpringBoot 构建一个项目,只需要引入对应框架所需的依赖,配置就可以交给 SpringBoot 处理了。
@ComponentScan
配置组件扫描的指令,提供了类似与
<context:component-scan>
标签的作用,通过
basePackageClasses
或者
basePackages
属性来指定要扫描的包。如果没有指定这些属性,那么将从声明这个注解的类所在的包开始扫描包及子包。而我们的
@SpringBootApplication
注解声明的类就是 main 函数所在的启动类,因此扫描的包是该类所在包及其子包。因此,一般启动类会放在一个比较前的包目录中。