SpringBoot面试题

86 阅读3分钟
  • springboot是什么?

S pringboot概念:

SpringBoot 遵循约定大于配置的原则。定义了一套接口规范,这套规范规定:SpringBoot 在启动时会扫描外部引用jar 包中的META-INF/spring.factories文件,将文件中配置的类型信息加载到 Spring 容器(此处涉及到 JVM 类加载机制与 Spring 的容器加载知识),并执行类中定义的各种操作。对于外部 jar 来说,只需要按照 SpringBoot 定义的标准,就能将自己的功能装置进 SpringBoot。

S pringboot优势:

  1. 能够单独运行。无需打包放到tomcat容器中运行,自带tomcat的servlet容器,能够直接运行。
  2. 能够自动配置。通过各种starter组件,将配置项自动配置到容器中,只要依赖就能够使用,这也是“约定大于配置”的具体表现。
  3. 减少配置文件。不再需要xml等配置文件,可以通过注解来实现各种配置。
  4. 新增健康监控。通过actuator和endpoint来实现健康监控。
  • springboot启动过程?

Springboot的启动主要是靠(1)@SpringBootApplication注解、(2)SpringApplication实例化和(3)SpringApplication.run()方法起作用。

**@ **SpringBootApplication注解由以下 3 个组成:

  1. @SpringBootConfiguration:标注当前类是配置类,将其注入到Spring容器中。
  2. @EnableAutoConfiguration:开启自动配置,将META-INF/spring.factories文件中的配置类加载进来。
  3. @ComponentScan:扫描当前目录和子目录中bean,将其加载进来。

实例化SpringApplication:

  1. 判断是否为web环境;
  2. 设置初始化器;
  3. 设置监听器;
  4. 推断应用的入口类,开始调用run()方法;

SpringApplication.run()方法的流程:

  1. 通过SpringFactorieLoader对象获得SpringApplicationListener,获取监听器。
  2. 初始化Environment对象。
  3. 创造ApplicationContext容器对象,并做初始化。
  4. 查找容器中的CommandLinesRunner和ApplicationRunner,进行初始化操作。
  5. 最后启动ApplicationContext,所有bean对象已经加载到该容器中;
  1. SpringBoot 源码解析 (二)----- Spring Boot精髓:启动流程源码分析:www.cnblogs.com/java-chen-h…
  2. SpringBoot启动流程是怎样的?:https://juejin.cn/post/6895341123816914958#heading-8
  • springboot自动配置原理?

sprinboot的自动配置主要依靠@EnableAutoConfiguration这个注解,使用这个注解就实现了ImportSelector接口,该接口的主要用途是加载各个starter中 **/MATE-INF/ **spring .factories **中的配置类,将这些配置类加载到IoC容器中。 **值得注意的是所有以spring-boot-starter开头的依赖都放在springboot-autoconfig下,所以项目加入以上依赖,只要在properties文件中写好配置项,就会自动配置好,能够直接使用。

@SpringbootApplication由一下3个注解组成:

  1. @SpringBootConfiguration:运行将该注册类直接注入到IoC容器中;
  2. @ComponentScan:允许扫描配置路径的实体类,其中加上了@Controller、@Service、@Component等注解的将其加载到IoC容器中;
  3. @EnableAutoConfiguration:实现springboot自动装载的核心类;
  1. 淘宝一面:“说一下 Spring Boot 自动装配原理呗?”:

www.cnblogs.com/javaguide/p…

  1. 看完就会的SpringBoot自动装配原理:

滑动验证页面

  1. Spring Boot自动装配原理与启动过程详解:

https://juejin.cn/post/6940128900093575198#heading-11

  • springboot的starter的原理?

starter是实现springboot中自动配置的具体形式,在starter目录/MATE-INF/spring.factories配置好需要加载到IoC的配置类信息,springboot-autoconfig会自动来读取该配置项,依靠反射来实例化配置项。

  • springboot启动时候需要运行特定代码方法?

实现ApplicationRunner接口或者实现CommandLineRunner接口。