###谈谈你对SpringBoot的理解,他有哪些特性(优点)?
Springboot的用来快速开发Spring应用的一个脚手架,其设计目的是用来简化新Spring应用的初始化搭建以及开发过程。
1.Springboot提供了很多内置的starter结合自动配置,对主流框架无配置集成。开箱即用。
2.Springboot简化了开发,采用JavaConfig的方式可以使用零xml的方式进行开发。
3.springboot内置web容器无需依赖外部web服务器。省略了web。xml,直接运行jar文件就可以启动web应用。
4,springboot帮我管理了常用的第三方依赖的版本,减少出现版本冲突的问题。
5.springboot自带了监控功能,可以监控应用程序的运行状况。或者内存,线程池,Http请求统计等同时还提供了优雅关闭应用程序等功能。
###Springboot和Springboot的关系和区别?
springboot是spring生态的产品。
spring Framework是一个容器框架
springboot他不是一个框架,他是一个可以快速构建基于Spring的脚手架(里面包含了spring和各种框架),为开发spring生态其他框架铺平道路。
2个不是一个层面的东西,没有可比性。
###SpringBoot的核心注解
1.@SpringBootApplication注解:这个纾解标识了一个Springboot工程,它实际上是另外三个注解的集合,这三个注解是:
2.@SpringbootConfiguration:这个注解实际就是一个@Configuration,表示启动类也是一个配置类
3.@EnableAutoConfiguration:向Spring容器导入了一个Selector,用来加载ClassPath下SpringFactories中所定义的自动配置类,将这些自动加载为配置Bean。
4.@Conditional也很关键,如果没有它,我们无法在自定义应用中进行定制开发,
*@ConditionalOnBean,
*@ConditionalOnClass,
*@ConditionalOnExpression,
*@ConditionalOn MissingBean
###SpringBoot的自动配置原理
1.通过@SpringbootConfiguration引入了@EnableAutoConfiguration(负责启动自动配置功能)
2.@EnableAutoConfiguration引入了@Import
3.Spring容器启动时:加载IOC容器时会解析@Import注解。
4.@Import导入了一个deferredImportSelector,它会使SpringBoot的自动配置类的顺序在最后,这样方便我们扩展和覆盖。
5.然后读取所有的/META-INF/spring.factories文件。(SPI)
6.过滤出所有AutoConfigurationClass类型的类。
7.最后通过@Condition排除无效的自动配置类。