面试速记之springboot

是什么

spring提供的一个快速开发工具包

快速开发 spring + springmvc

通过spring-boot-starter-web依赖快速开发web应用

简化配置,约定优于配置

整合其他组件简单(starter机制),开箱即用

自动装配原理


启动类(ProjectNameApplication.java)上有@SpringBootApplication

其内使用@EnableAutoConfiguration

其内部使用@Import导入AutoConfigurationImportSelector.class

其selectImports()方法通过SpringFactoriesLoader.loadFactoryNames()方法

加载 META-INF/spring.factories 中的 EnableAutoConfiguration

通过各种starter包下类的@Configuration@Bean完成自动装配

该过程使用了spring的spi机制

杂项

@SpringBootConfiguration继承自@Configuration

二者功能一致,标注当前类是配置类

会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名

配置文件:application.yml

支持.properties 和 .yml两种格式

如何理解springboot中的各种starter

通常情况下,引入新东西需要手动先配置其xml,定义好各种所需bean

starter是一个jar包,内部自带@Configuration@Bean为我们准备好了各种必须品

只需要导starter依赖,例如mybatis的mybatis-spring-boot-starter和redis的spring-boot-starter-redis就能使用默认配置集成到项目中

若要更改默认配置才需手动配置

补充

SPI 全称为(Service Provider Interface),是 JDK 内置的一种服务提供发现机制,它是一种动态替换发现服务实现者的机制。简单地理解,这是建立在面向接口编程下的一种为了使组件可扩展或动态变更实现的规范。

常见的类 SPI 的设计有 JDBC、JNDI、JAXP 等,很多开源框架的内部实现也采用了 SPI。例如,在 mysql-connector-java-xxx.jar 中发现了 META-INF\services\java.sql.Driver 文件

spring.factories中有类的全限定类名,通过反射的方式加载