一:什么是springboot
springboot快速开发解决方案,springboot不是一个框架技术。比如maven不是jar包,maven是为了更好管理jar包,同理springboot不是技术框架,springboot是为了让我们更好更快更方便地整合框架。
二:为什么使用springboot
传统spring的缺点:
1:xml配置文件太多,台繁琐
2:整合一个框架需要导入的jar包太多
springboot的优点:
1:简化依赖管理(起步依赖):在Spring Boot中提供了一系列的Starter POMs,将各种功能性模块进行了划分与封装,让我们可以更容易的引入和使用,有效的避免了用户在构建传统Spring应用时维护大量依赖关系而引发的JAR冲突等问题。
2:自动化配置:Spring Boot为每一个Starter都提供了自动化的Java配置类,用来替代我们传统Spring应用在XML中繁琐且并不太变化的Bean配置;同时借助一系列的条件注解修饰,使得我们也能轻松的替换这些自动化配置的Bean来进行扩展。
3:嵌入式容器:除了代码组织上的优化之外,Spring Boot中支持的嵌入式容器也是一个极大的亮点(此处仿佛又听到了Josh Long的那句:“Deploy as a Jar, not a War”),借助这个特性使得Spring Boot应用的打包运行变得非常的轻量级。
4:生产级的监控端点: spring-boot-starter-actuator的推出可以说是Spring Boot在Spring基础上的另一个重要创新,为Spring应用的工程化变得更加完美。该模块并不能帮助我们实现任何业务功能,但是却在架构运维层面给予我们更多的支持,通过该模块暴露的HTTP接口,我们可以轻松的了解和控制Spring Boot应用的运行情况。
5:swagger管理所有的接口信息,其实就是一个线上的api开发文档
小结:springboot两个核心思想起步依赖和自动配置
起步依赖
介绍第一个起步依赖spring-boot-starter-web,这个依赖包含了要实现web功能所有的jar包
spring-boot-starter-web:
l spring-boot-starter: spring核心jar,自动配置支持jar、日志和YAML支持jar
l spring-boot-starter-tomcat: 内置tomcat
l hibernate-validate: hibernate:数据校验
l Jackson-databind: json和Java对象转换
l Spring-web: spring核心包
l Spring-webmvc: springmvc包
自动配置
有@springbootApplication注解的类就是引导类,@springbootApplication注解是一堆注解的集合。@springbootApplication注解组成部分:
@EnableAutoConfiguration --> @Import(EnableAutoConfigurationImportSelector.class) -->
AutoConfigurationImportSelector
该类下面有如下方法,该方法确定自动配置哪些内容
找到spring-boot-autoconfigure jar包,点击展开你就会发现spring.factories属性配置文件
这个属性配置文件就指明了springboot工程启动的时候需要做哪些自动配置:
上面都是类的全限定名,那么这些类放在哪里呢?就在spring-boot-autoconfiguration.jar下面:
从上面可以看出springboot工程一起动,其实自动帮助我们配置很多东西比如(solr、redis、mq、web等等),只不过这些以前是程序员手动通过xml配置的,现在呢,是springboot通过java配置的方式自动帮助我们配置的。