springboot相关原理简单汇总
一、基于你对springboot的理解描述一下什么是springboot
Springboot是开发者开发spring项目,为了简化配置,快速构建完成spring项目,提供了解决方案和spring生态体系功能的应用方案。
二、约定优于配置指的是什么?
(1)maven的目录结构
A) 默认有resources文件夹存放配置文件
B) 默认打包方式为jar
(2) Spring-boot-starter-web中默认包含spring mvc相关依赖以及内置的tomcat容器,使得构建一个web应用更加简单
(3) 默认提供application.properties/yml文件
(4) 默认通过spring.profiles.active属性来决定运行环境时读取的配置文件
(5) EnableAuthConfiguration默认对于依赖的starter进行自动装载
三、@SpringBootApplication由哪几个注解组成,这几个注解分别表示什么作用
本质上主要有@Configuration、@EnableAutoConfiguration、@ComponentScan三种组成,@SpringBootApplication是复合注解。
@Configuration和@ComponentScan用的比较多。
@Configuration是加载IOC容器的配置类,将内部配置的bean注入到IOC中。
@ComponentScan相当于xml配置文件中的<context:component-scan>,主要是扫描指定路径下的标识了需要装配的类,自动装配到spring的IOC容器中。
需要装配的标识主要有:@Component、@Controller、@Service等等
ComponentScan默认扫描当前package下的所有加了相关注解标识的类到IOC容器。
@EnableAutoConfiguration是开启自动配置的功能,它里面带有一个@Import的注解,类似于xml下的
<import resource/>,可以把多个分开的JavaConfig配置信息合并到一个配置中。
@Import 注解可以配置三种不同的 class
1. 第一种就是前面演示过的,基于普通 bean 或者带有@Configuration 的 bean 进行诸如
2. 实现 ImportSelector 接口进行动态注入
3. 实现 ImportBeanDefinitionRegistrar 接口进行动态注入
四、springboot自动装配的实现原理
@EnableAutoConfiguration注解中的@AutoConfigurationImportSelector,里面的selectImports方法,会调用getAutoConfigurationEntry(),里面会通过this.getCandidateConfigurations()加载需要配置的beanName。这些beanName集合来自于SpringFactoriesLoader.loadFactoryNames(),传参class和类加载器,底层是读取resources下的 META-INF/spring.factories中的需要加载的配置类名。

最后返回string[],即是需要import到容器中的beanName集合。
五、spring中的spi机制的原理是什么?
在resources资源文件夹中,创建META-INF/spring.factories文件,里面配置需要加载依赖到项目中的类名称。key为注解bean的名称,value为根据此注解,需要加载到容器中的beanName集合。利用spring的@EnableAutoConfiguration自动装配,启动服务的时候,将spring.factories中需要的bean加载到容器中。同时,可以添加canditional条件,来控制是否需要加载哪些bean。在META-INF下创建spring-autoconfigure-metadata.properties。


常见过滤条件


浙公网安备 33010602011771号