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。

 

 

 

常见过滤条件

 

 

posted @ 2019-08-16 19:19  金鱼的第七秒记忆  阅读(56)  评论(0)    收藏  举报