SpringBoot在面试中的高频考点

SpringBoot在面试中的高频考点,第1张

SpringBoot在面试中的高频考点

SpringBoot在面试中也是比较高频的问题,尤其阿里美团这种主要使用Java的厂,尤其到了秋招后期的时候,问框架真的挺多的。这块内容主要结合自己的项目来学习吧。

需要SpringBoot思维导图的,在公众号【代码界的小白】后台回复:SpringBoot思维导图

1、什么是SpringBoot?

回答:随着动态语言的流行,Java的开发显得格外的笨重:繁多的配置,低下的开发效率,复杂的部署流程以及第三方技术集成难度大.

SpringBoot应运而生.

它使用"习惯优于配置"(项目中存在大量的配置,此外还内置一个习惯性配置,让你无需手动进行配置)的理念让你的项目快速运行起来.使用SpringBoot很容易创建一个独立运行(运行Jar内嵌Servlet容器)准生产级别的基于Spring框架的项目,使用SpringBoot你可以不用或者只需要很少的Spring配置。

追问:SpringBoot的优缺点?

优点:

  • 快速构建项目
  • 对主流开发框架的无配置集成
  • 项目可独立运行,无需外部依赖Servlet容器
  • 提供运行时的应用监控
  • 极大地提高了开发,部署效率
  • 与云计算的天然集成

缺点:

  • 书籍文档较少,且不够深入
  • 版本迭代速度很快,一些模块改动很大。
  • 由于不用自己做配置,报错时很难定位。
  • 网上现成的解决方案比较少
2、介绍一下@SpringBootApplication 注解,Spring Boot 的自动配置是如何实现的?

回答:@SpringBootApplication:包含了@SpringBootConfiguration(打开是@Configuration),@EnableAutoConfiguration,@ComponentScan注解。

JavaConfig形式的Spring Ioc容器的配置类使用的那个@Configuration,SpringBoot社区推荐使用基于JavaConfig的配置形式,所以,这里的启动类标注了@Configuration之后,本身其实也是一个IoC容器的配置类。任何一个标注了@Configuration的Java类定义都是一个JavaConfig配置类。任何一个标注了@Bean的方法,其返回值将作为一个bean定义注册到Spring的IoC容器,方法名将默认成该bean定义的id。

@ComponentScan对应XML配置中的元素,@ComponentScan的功能其实就是自动扫描并加载符合条件的组件(比如@Component和@Repository等)或者bean定义,最终将这些bean定义加载到IoC容器中。我们可以通过basePackages等属性来细粒度的定制@ComponentScan自动扫描的范围,如果不指定,则默认Spring框架实现会从声明@ComponentScan所在类的package进行扫描。

英文意思就是自动配置,概括一下就是,借助@import的帮助,将所有符合自动配置条件的bean定义加载到IoC容器。

(里面最关键的是@import(EnableAutoConfigurationimportSelector.class),借助EnableAutoConfigurationimportSelector,@EnableAutoConfiguration可以帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot创建并使用的IoC容器。该配置模块的主要使用到了SpringFactoriesLoader。

SpringFactoriesLoader为Spring工厂加载器,该对象提供了loadFactoryNames方法,入参为factoryClass和classLoader即需要传入工厂类名称和对应的类加载器,方法会根据指定的classLoader,加载该类加器搜索路径下的指定文件,即spring.factories文件,传入的工厂类为接口,而文件中对应的类则是接口的实现类,或最终作为实现类。)

3、什么是SpringBoot Starters?

和自动配置一样,Spring Boot Starter的目的也是简化配置,而Spring Boot Starter解决的是依赖管理配置复杂的问题,有了它,当我需要构建一个Web应用程序时,不必再遍历所有的依赖包,一个一个地添加到项目的依赖管理中,而是只需要一个配置spring-boot-starter-web, 同理,如果想引入持久化功能,可以配置spring-boot-starter-data-jpa

4、Spirng Boot 常用的两种配置文件

回答:一个是properties,另一个是yaml。

追问:什么是 YAML?YAML 配置的优势在哪里 ?

YAML现在可以算是非常流行的一种配置文件格式,无论是前端还是后端,都可以见到YAML配置。那么YAML配置和传统的properties配置相比到底有哪些优势呢?

配置有序。在一些特殊场景下,配置有序很关键。
支持数组,数组中的元素可以是基本数据类型也可以是对象。
简洁。
相比properties配置文件,YAML还有一个缺点,就是不支持@PropertySource注解导入自定义的YAML配置。

5、Spring Boot 加载配置文件的优先级了解么?3

SpringBoot加载配置文件的优先级由高到低如下:

file: ./config/
file: ./
classpath: /config/
classpath: /

SpringBoot会从这四个位置全部加载主配置文件,高优先级的配置会覆盖低优先级的配置,并且 ,互补配置。

说明: file就代表主目录下,classpath代表类路径下,若不懂见下图说明。

《Java面试必知必会》往期推荐阅读!

  • Java虚拟机在面试中的高频考点

  • MySQL事务在面试中的高频考点

  • Redis在面试中的高频考点

  • Spring在面试中的高频考点

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5672426.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存