概述
什么是 Spring Boot?
是spring组件一站式的解决方案,主要简化了使用spring的难度,省去了繁重的配置,开发者能快速上手。
Srping和Spring Boot有什么区别?
spring:spring是一个设计层面框架,它解决的是业务逻辑层和其他各层的松耦合问题。因为spring是非侵入式的,所以spring能与各个层面的框架组件搭配使用,也正因为如此,我们使用spring的时候常常需要编带大量的配置代码,这对不熟悉的开发者来说十分不友好。
spring boot:可以看做spring的优化版,spring boot采用自动配置的方式向容器中注入了大量的配置类,省去了开发者编写大量配置代码的工作;同时spring boot也提供了一些其它非功能性的特征,如:日志、安全控制等。
Spring Boot 自动配置原理是什么?
通过使用@EnableAutoConfiguration,在容器启动的时候,将类路径下META-INF/spring.factories(导入的jar包中,如mybatis)文件中配置的所有类加载到容器中,然后通过条件注解(@ConditionalOnClass等)来决定一个配置是否生效,通常是检查classpath下是否存在某些类,所以很多第三方框架我们只需要引入jar包就可以直接使用了。
大多数配置类都和一个properties.class类绑定,里面保存了配置类的默认属性。如果想要自定义相关配置,可以在spring boot默认配置文件(.yaml或.properties)中覆写相关配置属性的值,这样下次启动容器新的属性值就会替代默认属性值。
Spring Boot 中的 starter 到底是什么 ?
就是一个maven地址集合,里面除了有第三方框架的必要jar包外,一般还带有一个autoconfigure包,里面包含AutoConfiguration类和META-INF/spring.factories文件,用来作为自定义配置。这样就符合spring boot即插即用的思想,省去了配置的麻烦。