面试整理——Spring Boot

Spring Boot

第一节 综合

问:SpringBoot和Spring对比?

  • Spring提供了很多好用的功能:SpringJDBC、SpringMVC、SpringSecurity、SpringAOP、SpringORM、SpringTest等。
  • SpringBoot可以看作是Spring的扩展和进化。
  • 首先设计理念约定大于配置,使用大量默认配置,可以快速搭建项目。
  • 嵌入应用服务器如Tomcat、 Jetty、 Undertow容器等,不需要再单独配置Web服务器。
  • 支持JavaConfig可以减少笨重的xml配置
  • 支持自动配置

问:SpringBoot启动流程?

  • 由SpringFactoriesLoader
  • 首先 prepareEnvironment 配置环境:prepareEnvironment
  • 然后准备 Context 上下文:createApplicationContext
  • ApplicationContext 的后置处理器:postProcessApplicationContext
  • 初始化 lnitializers:applylnitializers
  • 通知处理上下文准备和加载时间:listeners.contextPrepared listeners.contextLoaded
  • 然后开始refresh:refreshContext

通过 SpringFactoriesLoader 加载 META-INF/spring.factories 文件,获取并创建 SpringApplicationRunListener 对象

2、然后由 SpringApplicationRunListener 来发出 starting 消息

3、创建参数,并配置当前 SpringBoot 应用将要使用的 Environment

4、完成之后,依然由 SpringApplicationRunListener 来发出 environmentPrepared 消息

5、创建 ApplicationContext

6、初始化 ApplicationContext,并设置 Environment,加载相关配置等

7、由 SpringApplicationRunListener 来发出 contextPrepared 消息,告知SpringBoot 应用使用的 ApplicationContext 已准备OK

8、将各种 beans 装载入 ApplicationContext,继续由 SpringApplicationRunListener 来发出 contextLoaded 消息,告知 SpringBoot 应用使用的 ApplicationContext 已装填OK

9、refresh ApplicationContext,完成IoC容器可用的最后一步

10、由 SpringApplicationRunListener 来发出 started 消息

11、完成最终的程序的启动

12、由 SpringApplicationRunListener 来发出 running 消息,告知程序已运行起来了

问:Spring Boot 的核心注解?

核心注解是@SpringBootApplication 由以下三种组成

  • @SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
  • @EnableAutoConfiguration:打开自动配置的功能,根据类路径下的 jar 包和配置动态加载配置和注入bean。
  • @ComponentScan:Spring组件扫描。

问:SpringBoot常用starter都有哪些?

  • spring-boot-starter-web - Web 和 RESTful 应用程序;
  • spring-boot-starter-test - 单元测试和集成测试;
  • spring-boot-starter-jdbc - 传统的 JDBC;
  • spring-boot-starter-security - 使用 SpringSecurity 进行身份验证和授权;
  • spring-boot-starter-data-jpa - 带有 Hibernate 的 Spring Data JPA;
  • spring-boot-starter-data-rest - 使用 Spring Data REST 公布简单的 REST 服务

问:Spring Boot 常用配置文件?

  1. properties文件
  2. yml文件

问:SpringBoot自动配置的原理?

  • @EnableAutoConfiguration找到META-INF/spring.factories(需要创建的bean在里面)配置文件
  • 读取每个starter中的spring.factories文件

问:SpringBoot的自动配置流程?

问:SpringBoot把对象注入容器的几种方法?

  • 通过注解注入:**@Configuration** + @Bean + new Object()
  • 通过构造方法注入:**@Component** + @Autowired + 构造器
    • @Controller / @Service / @Repository / @ComponentScan 都是细化的 @Component
  • 通过set方法注入:**@Component** + @Autowired + set()
  • 通过属性注入:**@Autowired** + private Object obj

问:假如现在在一个类了要引用到几十个Bean,难道要在类里声明这些bean然后加注解吗,有没有更好的做法?

通过构造器注入的方式


参考:

🔗 后端面试的所有知识点