面试速记之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中有类的全限定类名,通过反射的方式加载
发布评论