SpringBoot面试题

  • springboot是什么?

Springboot概念:

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

Springboot优势:

  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精髓:启动流程源码分析:https://www.cnblogs.com/java-chen-hao/p/11829344.html
  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 自动装配原理呗?”:

https://www.cnblogs.com/javaguide/p/springboot-auto-config.html

  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接口。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yangnk42

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值