spring boot 特点
创建独立的Spring应用
SpringBoot可以创建独立的Spring应用,它比用原生的SpringFramework开发的应用更简单,配置更少。
内嵌web服务器
以前开发web应用,会把项目打成war包,然后部署到外部Tomcat运行项目,现在直接运行jar包即可。
提供可选的start依赖,简化Maven配置
启动器start,可以直接引入该场景下所有的包依赖,并且多个j个jar包对应的版本也帮我们选择好了。
自动配置Spring以及第三方功能
以前开发Spring项目,有很多常规配置需要配置,并且引入其他技术时,都伴随着大量的配置需要手动执行。那么有了自动配置后,这些都不需要自己去配置了,可以直接面向业务代码开发,而不必被大量配置所困扰了。
提供生产级别的特性
SpringBoot自带了生产级别的指标和运行状况检查,可以帮助我们了解服务运行的最新状况。并且,当我们需要修改某些配置的时候,也不需要直接在项目源码上进行修改了,可以通过外部化配置,就可以将修改生效。
无需代码生成以及XML配置
SpringBoot是整合Spring生态圈技术栈的一站式框架,是简化Spring技术栈的快速开发脚手架,缺点是SpringBoot迭代快,变化快,且封装很深,内部原理复杂,不容易精通。
spring boot启动流程
spring-boot启动首先是靠启动类的注解@SpringBootApplication.表明这个类是SpringBoot的主配置类(启动类)
@SpringBootApplication又主要包含了3个注解:
@SpringBootConfiguration:表示当前类是spring-boot配置类
@ComponentScan:指定spring在初始化容器时要扫描的包(默认启动类同级以及子包)
@EnableAutoConfiguration:表示开启自动配置功能,而它里面又包含了
@Import(AutoConfigurationImportSelector.class): 用于导入配置类
@AutoConfigurationPackage:用于从默认包路径加载注册我们业务定义的Bean
也正是借助@Import,spring将所有符合自动配置条件的bean定义加载到IOC容器.AutoConfigurationImportSelector是一个选择器, 它会从类路径下的
META-INF/spring.factories以及META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports中获取到文件中需要自动配置的类,以全类名反射的创建方式,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作;
启动流程
关键属性赋值